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!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn