random_bytes ()
ist dafür ideal. Speichern Sie das Token in der Sitzung des Benutzers mit $ _ Session
. Dieses Feld sollte den Namen csrf_token
(oder einen ähnlich beschreibenden Namen) haben. ( $ _ Session ['csrf_token']
). Vergleichen Sie die beiden. Wenn sie identisch sind, ist die Anfrage wahrscheinlich legitim. Wenn nicht, lehnen Sie die Anforderung ab und zeigen Sie eine Fehlermeldung an. // CSRF -Token auf der ersten Seite laden if (! Isset ($ _ Session ['csrf_token'])) {$ _SESSION ['csrf_token'] = bin2hex (Random_Bytes (32)); } // Beispielformular Echo & quot; & lt; Formmethode = 'post' action = 'process.php' & gt; & quot ;; echo & quot; & lt; Eingabe type = 'Hidden' name = 'csrf_token' value = '{$ _ Session [' csrf_token ']}' & gt; & quot ;; Echo & quot; Echo & quot; // process.php Session_start (); if ($ _server ['request_method'] === 'post') {if (isset ($ _ post ['csrf_token'] & amp; & amp; $ _post ['csrf_token'] ... uneingestellter ($ _ Session ['csrf_token']); // Gute Praxis, um Token nach Verwendung zu entfernen} else {// den Anfrage - CSRF -Angriff erkannt ("CSRF -Angriff erkannt!"); }}? Cookie: Enthält zusätzlich zum Feld versteckter Form das Token in einem Keks. Dies fügt eine weitere Schutzschicht hinzu und mildern Schwachstellen, bei denen das versteckte Feld manipuliert werden könnte. Der Server sollte sowohl den Cookie als auch den versteckten Feldwert vergleichen. CSRF -Keks. Dies verhindert, dass Client-Side-JavaScript auf das Cookie zugreift und es den Angreifern schwieriger macht, das Token zu stehlen. Wenn sie nicht direkt am CSRF -Schutzmechanismus beteiligt sind. Dies hilft, andere Schwachstellen zu verhindern, die in Verbindung mit einem CSRF -Angriff ausgenutzt werden könnten. Schwachstellen, die speziell zu CSRF führen, können mehrere gemeinsame Codierungspraktiken Anwendungen anfällig machen: Das obige ist der detaillierte Inhalt vonWie schütze ich vor Cross-Site-Anfrage (CSRF) in Php 8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!