„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können Nonces Webanfragen vor Replay-Angriffen schützen?

Wie können Nonces Webanfragen vor Replay-Angriffen schützen?

Veröffentlicht am 16.11.2024
Durchsuche:323

How Can Nonces Secure Web Requests Against Replay Attacks?

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 Salt.
  • 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 Usage

sendData() Function

  • Ruft die Nonce mithilfe der getNonce()-Funktion vom Server ab.
  • Generiert eine clientspezifische Nonce (cnonce) unter Verwendung einer sicheren Hash-Funktion.
  • Verkettet die Server-Nonce, Client-Nonce und Anforderungsdaten.
  • Erzeugt 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.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3