Cross-Site Request Forgery (CSRF) ist eine Angriffsart, bei der eine böswillige Website im Namen von eine Anfrage an eine legitime Website sendet ein authentifizierter Benutzer. Dies kann es dem Angreifer ermöglichen, Aktionen auszuführen, die der Benutzer nicht beabsichtigt hat, wie z. B. das Ändern seines Passworts oder betrügerische Einkäufe.
Es gibt mehrere Techniken, die zur Verhinderung eingesetzt werden können CSRF-Angriffe in PHP, einschließlich:
1. Authentifizierung in GET- und POST-Parametern erforderlich, nicht nur in Cookies
Diese Maßnahme schränkt die Fähigkeit bösartiger Websites ein, Anfragen im Namen authentifizierter Benutzer zu senden, indem sie erfordert, dass sowohl im GET als auch im GET- und POST-Parameter ein gültiges Authentifizierungstoken vorhanden ist POST-Parameter einer Anfrage.
2. Überprüfung des HTTP-Referer-Headers
Der HTTP-Referer-Header enthält die URL der Seite, die auf die aktuelle Seite verwiesen hat. Durch die Überprüfung des Referer-Headers ist es möglich zu erkennen, ob eine Anfrage von einer legitimen Quelle oder von einer bösartigen Website kommt.
Validierung von GET und POST Parameter
In Kohana können Sie die Regel Valid::not_empty() verwenden, um GET- und POST-Parameter zu validieren um sicherzustellen, dass sie nicht leer sind. Zum Beispiel:
$rules = array( 'get_param' => array( array('not_empty') ), 'post_param' => array( array('not_empty') ) ); $validation = Validation::factory($request->query() + $request->post()) ->rules($rules); if (!$validation->check()) { // CSRF attack detected }
Überprüfen des HTTP-Referer-Headers
In Kohana können Sie die Methode Request::referrer() verwenden, um die URL des Verweisers abzurufen Seite. Um zu überprüfen, ob der Referer-Header gültig ist, können Sie ihn mit dem erwarteten Wert vergleichen:
$referrer = $request->referrer(); if ($referrer !== $expected_referrer) { // CSRF attack detected }
Ein einmaliges Token verwenden
Der effektivste Weg dazu Um CSRF-Angriffe zu verhindern, verwenden Sie ein einmaliges Token. Dieses Token wird auf dem Server generiert und in der Sitzung gespeichert. Wenn ein Benutzer ein Formular sendet, wird das Token in die Anfrage aufgenommen. Der Server überprüft dann das Token und schließt die Anfrage ab, wenn es gültig ist.
Um ein einmaliges Token in Kohana zu implementieren, können Sie die folgenden Schritte verwenden:
Das obige ist der detaillierte Inhalt vonWie kann ich Cross-Site Request Forgery (CSRF)-Angriffe in PHP verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!