Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie PHP-Formulare, um CSRF-Angriffe zu verhindern

So verwenden Sie PHP-Formulare, um CSRF-Angriffe zu verhindern

王林
王林Original
2023-06-24 11:53:411331Durchsuche

Mit der kontinuierlichen Weiterentwicklung der Netzwerktechnologie sind Sicherheitsprobleme zunehmend zu einem Problem geworden, das bei der Entwicklung von Netzwerkanwendungen nicht ignoriert werden kann. Unter diesen ist der Cross-Site-Request-Forgery-Angriff (CSRF) eine häufige Angriffsmethode. Sein Hauptzweck besteht darin, den Benutzer dazu zu nutzen, eine illegale Anfrage an den Hintergrund zu initiieren, indem er dem Benutzer ermöglicht, eine böswillige Anfrage im Browser zu initiieren auf der Website angemeldet ist. Dies führt zu serverseitigen Sicherheitslücken. In PHP-Anwendungen ist die Verwendung der Formularvalidierung ein wirksames Mittel, um CSRF-Angriffe zu verhindern.

  1. CSRF-Token-Überprüfung hinzufügen

CSRF-Angriffe nutzen hauptsächlich die Identität angemeldeter Benutzer, um Remote-Angriffe durchzuführen. Der direkteste Weg, sich vor dieser Angriffsmethode zu schützen, besteht darin, den Seitendaten einige unkonventionelle Werte hinzuzufügen und Formulare, wodurch jede Formularanforderung nur einmal gesendet werden kann. Bei diesen Werten handelt es sich um CSRF-Tokens, mit denen überprüft wird, ob die Identitätsinformationen beim Absenden des Formulars legal sind. Bei der Verarbeitung des Formulars im Hintergrund muss das Token überprüft werden. Erst wenn es mit dem voreingestellten Token übereinstimmt, kann die Anfrage weiter verarbeitet werden.

Ein Beispielcode lautet wie folgt:

// 生成Token值,通常可以在session中设置

session_start();

$token = md5(uniqid(mt_rand(), true));

$_SESSION['csrf_token'] = $token;

// 应用到表单中

<input type="hidden" name="csrf_token" value="<?=$_SESSION['csrf_token']?>"/>

Für die Formularübermittlung ist vor der Verarbeitung der Daten eine Token-Verifizierung erforderlich, wie folgt:

// 获取表单提交的Token

$submittedToken = $_POST['csrf_token'];

// 验证Token是否合法

if (!isset($_SESSION['csrf_token']) || $submittedToken !== $_SESSION['csrf_token']) {

    die('Token validation failed, request denied');

}

Im obigen Code verwenden wir den Sitzungsmechanismus von PHP, um ein zufälliges und nicht dupliziertes Token zu generieren Wert und wird in der Sitzung gespeichert. Im Formular müssen wir den Token-Wert als Feld im ausgeblendeten Feld an den Hintergrund übergeben, damit er beim Absenden des Formulars an den Server gesendet werden kann. Auf der Serverseite müssen wir den angeforderten Token-Wert überprüfen. Wenn der übermittelte Token nicht mit dem vordefinierten Token übereinstimmt, muss die Anfrage abgelehnt werden.

  1. Konfigurieren des Referrer-Richtlinien-Headers

Referrer-Richtlinie ist ein HTTP-Header, der verwendet wird, um zu steuern, ob der Browser das Referrer-Feld einschließt, wenn er Anfragen an Websites von Drittanbietern sendet. Wenn wir Anfragen nach illegalen Referrer-Feldern während der Formularverarbeitung direkt ablehnen, können wir uns wirksam gegen CSRF-Angriffe wehren.

In PHP können wir den folgenden Code verwenden, um den Referrer-Policy-Header festzulegen:

header('Referrer-Policy: no-referrer');

Der obige Code weist den Browser an, die Referrer-Header-Informationen beim Senden einer Anfrage nicht einzuschließen. Selbst wenn ein Angreifer versucht, einen CSRF-Angriff durch Fälschung des Referrer-Headers durchzuführen, wird dieser auf diese Weise vom Browser abgelehnt und die Anfrage wird nicht an den Server gesendet.

  1. Fügen Sie dem Formular die Authentifizierung mit „Bestätigungscode“ oder „Passwort“ hinzu

Zusätzlich zum Hinzufügen von CSRF-Token zum Formular können wir auch zusätzliche Authentifizierungsmethoden wie Bestätigungscode oder Passwort hinzufügen, um die Sicherheit des Formulars zu erhöhen CSRF-Angriffe verhindern. Obwohl diese Methode relativ umständlich ist, ist sie sehr effektiv, da der Angreifer unabhängig davon, wie er versucht, den Server zu täuschen, zusätzliche Authentifizierungslinks durchlaufen muss, was den Angriff erschwert.

  1. Vermeiden Sie die Verwendung der GET-Methode zum Senden von Formularen.

CSRF-Angriffe werden meist durch GET-Anfragen initiiert. Daher versuchen wir, die GET-Methode zum Senden von Daten im Formular zu vermeiden. Wenn die GET-Methode verwendet werden muss, müssen wir dem Formular einen Token-Wert oder eine andere Authentifizierungsmethode hinzufügen, um die Sicherheit des Formulars zu erhöhen.

Kurz gesagt ist die Verhinderung von CSRF-Angriffen ein Thema, dem bei der PHP-Anwendungsentwicklung Aufmerksamkeit geschenkt werden muss. Durch den sinnvollen Einsatz verschiedener Sicherheitsmechanismen wie Token-Wert, Referrer-Policy-Header und Verifizierungscode können wir Anwendungen wirksam vor der Bedrohung durch CSRF-Angriffe schützen. Gleichzeitig müssen wir weiterhin auf die neuesten Netzwerksicherheitsprobleme und Angriffsmethoden achten und unsere Sicherheitsvorkehrungen zeitnah aktualisieren und verbessern.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP-Formulare, um CSRF-Angriffe zu verhindern. 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