Heim > Backend-Entwicklung > PHP-Tutorial > So legen Sie den HTTP-Referer im PHP-Formular fest, um die Fälschung von Cross-Site-Anfragen zu verhindern

So legen Sie den HTTP-Referer im PHP-Formular fest, um die Fälschung von Cross-Site-Anfragen zu verhindern

WBOY
Freigeben: 2023-06-25 19:24:02
Original
1935 Leute haben es durchsucht

Durch die rasante Entwicklung des Internets und immer komplexer werdende Benutzerbedürfnisse sind die Anforderungen und Funktionen von Webanwendungen immer komplexer und vielfältiger geworden. Dies hat jedoch auch zu immer größeren Sicherheitsproblemen im Internet geführt. Eine der häufigsten Angriffsmethoden ist der Cross-Site-Request-Forgery-Angriff (CSRF).

Einfach ausgedrückt bedeutet ein CSRF-Angriff, dass ein Angreifer die Identitätsauthentifizierung eines legitimen Benutzers auf einer bestimmten Website nutzt, um die Identität des Benutzers nachzuahmen und bestimmte Vorgänge im Namen des Benutzers ohne dessen Erlaubnis oder Wissen durchzuführen. Eine Form des Angriffs . Es gibt viele gängige Angriffsmethoden, wie zum Beispiel das Senden böswilliger Anfragen über URLs, Iframes, Bilder usw. Das Setzen von HTTP-Referenzen im PHP-Formular ist eine wirksame Möglichkeit, CSRF-Angriffe zu verhindern.

Also, wie stellt man den HTTP-Referer in PHP-Form ein?

HTTP-Referer bedeutet, dass der Browser vor dem Senden einer Anfrage die Quelladresse der aktuellen Seite, also die Quelle der Anfrage, überprüft. Eine Anfrage gilt als legitim, wenn die Quelle der Anfrage mit der Quelladresse in der vom Server empfangenen Anfrage übereinstimmt. Daher können Sie durch Festlegen des HTTP-Referers dem Formular eine Schutzschicht hinzufügen und die Quelladresse der Formularübermittlung begrenzen, wodurch CSRF-Angriffe wirksam verhindert werden.

Der spezifische Einstellungsprozess ist wie folgt:

1. Fügen Sie der Formularseite den folgenden Code hinzu:

<?php 
session_start();
$token = md5(uniqid(rand(), TRUE)); 
$_SESSION['csrf_token'] = $token;
?>
<form action="" method="post">
    <input type="hidden" name="csrf_token" value="<?php echo $token; ?>">
    //其他表单元素
    <input type="submit" value="提交">
</form>
Nach dem Login kopieren

Öffnen Sie zuerst die Sitzung auf der Formularseite, generieren Sie dann ein zufälliges Token als CSRF-Token und speichern Sie es in Sitzung. Weisen Sie das Token einem ausgeblendeten Element zu und übermitteln Sie es zusammen mit dem Formular als Teil des Formularelements an den Server.

2. Fügen Sie als Nächstes den folgenden Code zur Formularverarbeitungsseite hinzu:

session_start();
if($_POST['csrf_token'] != $_SESSION['csrf_token']) {
    //不合法的请求
    exit("非法请求!");
}
//处理表单数据之前。...
Nach dem Login kopieren

Öffnen Sie auf der Formularverarbeitungsseite zunächst die Sitzung und vergleichen Sie dann den csrf_token im Formular mit dem zuvor in der Sitzung gespeicherten Token. Wenn die Token inkonsistent sind, gilt die Übermittlung als illegal und der Handler wird beendet. Ansonsten können die Formulardaten normal verarbeitet werden.

Zusammenfassend lässt sich sagen, dass das Festlegen eines HTTP-Referers in einem PHP-Formular nicht schwierig ist. Sie müssen lediglich ein zufälliges CSRF-Token auf der Formularseite generieren, es in der Sitzung speichern und dann das Token im Formular mit dem Token in vergleichen Sitzung ist genug. Dadurch können Cross-Site-Request-Forgery-Angriffe effektiv vermieden werden.

Das obige ist der detaillierte Inhalt vonSo legen Sie den HTTP-Referer im PHP-Formular fest, um die Fälschung von Cross-Site-Anfragen zu verhindern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage