So sichern Sie Webanfragen mit Nonces
Problem
Ein Benutzer hat eine Möglichkeit gefunden, das Anforderungsvalidierungssystem des Bewertungssystems einer Website auszunutzen Duplizieren hochwertiger HTTP-Anfragen. Dies beeinträchtigt die Integrität und Zuverlässigkeit des Systems.
Lösung: Implementierung eines Nonce-Systems
Nonces (einmal verwendete Anzahl) sind Werte, die Request-Replay-Angriffe verhindern, indem sie sicherstellen, dass eine bestimmte Anfrage nicht gesendet wurde vorher gemacht. Hier ist eine gängige und sichere Möglichkeit, ein Nonce-System zu implementieren:
Serverseitige Nonce-Generierung und -Verifizierung
getNonce()-Funktion
- Identifiziert den Client, der die Anfrage stellt (z. B. nach Benutzername, Sitzung).
- Generiert eine zufällige Nonce mithilfe einer sicheren Hash-Funktion (z. B. SHA512).
- Speichert die Nonce in einer Datenbank, die mit verknüpft ist Die ID des Clients.
- Gibt die Nonce an den Client zurück.
verifyNonce()-Funktion
- Ruft die zuvor gespeicherte Nonce ab für die Client-ID.
- Entfernt die Nonce aus der Datenbank (um zu verhindern, dass sie wiederverwendet wird).
- Generiert einen Hash mit der vom Client bereitgestellten Nonce (Cnonce), den Anforderungsdaten und ein geheimes Salz.
- Vergleicht den generierten Hash mit dem vom Client bereitgestellten Hash.
- Gibt true zurück, wenn die Hashes übereinstimmen, was auf eine gültige Nonce hinweist.
Client -Side Nonce-Nutzung
sendData()-Funktion
- Ruft die Nonce mithilfe der getNonce()-Funktion vom Server ab.
- Erzeugt eine clientspezifische Nonce (cnonce) unter Verwendung einer sicheren Hash-Funktion.
- Verkettet die Server-Nonce, Client-Nonce und Anforderungsdaten.
- Generiert einen Hash aus dem verketteten Wert.
- Sendet die Anfrage an den Server, einschließlich der Daten, Cnonce und Hash.
Sicherheitsüberlegungen
-
Zufällige Nonce-Generierung: Der makeRandomString( )-Funktion sollte höchst unvorhersehbare Zufallszahlen generieren, um die Sicherheit zu erhöhen.
-
Sichere Hash-Funktion:Verwenden Sie eine starke Hash-Funktion wie SHA512 oder bcrypt für Nonce-bezogene Hash-Berechnungen.
- Einmalige Verwendung pro Anfrage: Nonces sollten nur einmal verwendet und aus dem Speicher entfernt werden, um Wiederholungsangriffe zu verhindern.
Das obige ist der detaillierte Inhalt vonWie können Nonces Webanfragen vor Replay-Angriffen schützen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!