Csrf-Verteidigungsmethoden umfassen: 1. Überprüfen Sie das HTTP-Referer-Feld. 2. Fügen Sie der Anforderungsadresse ein Token hinzu und überprüfen Sie es. 3. Passen Sie Attribute im HTTP-Header an und überprüfen Sie es. CSRF ist eine Angriffsmethode, die Benutzer dazu zwingt, unbeabsichtigte Vorgänge an der Webanwendung auszuführen, bei der sie gerade angemeldet sind.
csrf ist eine Angriffsmethode, die Benutzer dazu zwingt, unbeabsichtigte Vorgänge an der aktuell angemeldeten Webanwendung auszuführen.
csrf-Abwehrmethoden:
Es gibt derzeit drei Hauptstrategien zur Abwehr von CSRF-Angriffen:
1. Überprüfen Sie das HTTP-Referer-Feld.
2. In der Anforderungsadresse Token hinzufügen und überprüfen;
3. Passen Sie die Attribute im HTTP-Header an und überprüfen Sie.
Lassen Sie uns im Detail darüber sprechen:
(1) Überprüfen Sie das HTTP-Referer-Feld
Gemäß dem HTTP-Protokoll gibt es ein Feld in der HTTP-Header namens Referer, der die Quelladresse der HTTP-Anfrage aufzeichnet. Normalerweise stammen Anfragen zum Zugriff auf eine sichere, eingeschränkte Seite von derselben Website. Wenn ein Hacker einen CSRF-Angriff auf die Website einer Bank durchführen möchte, kann er nur eine Anfrage auf seiner eigenen Website erstellen. Wenn ein Benutzer eine Anfrage über die Website des Hackers an die Bank sendet, verweist der Referrer der Anfrage auf die eigene Website des Hackers .
Um sich gegen CSRF-Angriffe zu schützen, muss die Website der Bank daher nur ihren Referrer-Wert für jede Übertragungsanfrage überprüfen. Wenn es sich um einen Domainnamen handelt, der mit bank.example beginnt, bedeutet dies, dass die Anfrage von der Bank stammt Website selbst. Ja, legal. Handelt es sich bei dem Referrer um eine andere Website, handelt es sich möglicherweise um einen CSRF-Angriff eines Hackers und die Anfrage wird abgelehnt.
Der offensichtliche Vorteil dieser Methode besteht darin, dass sie einfach und leicht zu implementieren ist. Normale Website-Entwickler müssen sich keine Sorgen über CSRF-Schwachstellen machen. Sie müssen lediglich allen sicherheitsrelevanten Anfragen einen Interceptor hinzufügen das Ende, um den Referrer-Wert zu überprüfen. Insbesondere für das aktuell vorhandene System besteht keine Notwendigkeit, den vorhandenen Code und die Logik des aktuellen Systems zu ändern, es besteht kein Risiko und es ist sehr praktisch.
(2) Token zur Anfrageadresse hinzufügen und überprüfen
Der Grund für den Erfolg des CSRF-Angriffs liegt darin, dass der Hacker die Anfrage des Benutzers vollständig fälschen kann Die Anforderungen in der Anforderung Alle Benutzerauthentifizierungsinformationen sind in Cookies vorhanden, sodass Hacker direkt die eigenen Cookies des Benutzers verwenden können, um die Sicherheitsüberprüfung zu bestehen, ohne die Authentifizierungsinformationen zu kennen.
Um CSRF zu widerstehen, besteht der Schlüssel darin, Informationen in die Anfrage einzufügen, die Hacker nicht fälschen können, und diese Informationen sind im Cookie nicht vorhanden. Sie können der HTTP-Anfrage ein zufällig generiertes Token als Parameter hinzufügen und auf der Serverseite einen Interceptor erstellen, um das Token zu überprüfen. Wenn in der Anfrage kein Token vorhanden ist oder der Token-Inhalt falsch ist, wird davon ausgegangen, dass dies der Fall ist ein CSRF-Angriff und die Anfrage wird abgelehnt.
(3) Passen Sie Attribute im HTTP-Header an und überprüfen Sie
Diese Methode verwendet auch Token zur Überprüfung. Der Unterschied zur vorherigen Methode besteht darin, dass hier anstelle der Wenn Sie das Token als Parameter in der HTTP-Anfrage verwenden, fügt es es in ein benutzerdefiniertes Attribut im HTTP-Header ein. Über die XMLHttpRequest-Klasse können Sie das HTTP-Header-Attribut csrftoken allen Anforderungen dieses Typs gleichzeitig hinzufügen und den Token-Wert darin einfügen.
Dies beseitigt die Unannehmlichkeiten beim Hinzufügen eines Tokens zur Anforderung in der vorherigen Methode. Gleichzeitig wird die über XMLHttpRequest angeforderte Adresse nicht in der Adressleiste des Browsers aufgezeichnet, und es besteht kein Grund zur Sorge Token wird über den Referrer an andere Websites weitergegeben.
Diese Methode weist jedoch große Einschränkungen auf. Die XMLHttpRequest-Anforderung wird normalerweise für die teilweise asynchrone Aktualisierung der Seite in der Ajax-Methode verwendet. Nicht alle Anforderungen sind für die Initiierung mit dieser Klasse geeignet, und die durch diese Klassenanforderung erhaltene Seite kann vom Browser nicht aufgezeichnet werden, sodass vorwärts und rückwärts , und Aktualisierung kann durchgeführt werden, Sammlung und andere Vorgänge bringen Unannehmlichkeiten für Benutzer mit sich.
Wenn Sie diese Methode zum Schutz verwenden möchten, müssen Sie außerdem bei älteren Systemen, die nicht über CSRF-Schutz verfügen, alle Anforderungen in XMLHttpRequest-Anforderungen ändern. Dadurch wird fast die gesamte Website neu geschrieben, was zweifellos kostspielig ist . Es ist inakzeptabel.
Wenn Sie mehr über verwandte Themen erfahren möchten, können Sie die chinesische PHP-Website besuchen.
Das obige ist der detaillierte Inhalt vonWas sind die CSRF-Verteidigungsmethoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!