Heim  >  Artikel  >  Web-Frontend  >  Was ist CSRF? Die Gefahren von CSRF und wie man sich dagegen verteidigt

Was ist CSRF? Die Gefahren von CSRF und wie man sich dagegen verteidigt

不言
不言Original
2018-09-19 15:25:5510537Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Frage: Was ist CSRF? Die Gefahren von CSRF und Verteidigungsmethoden haben einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

Was ist CSRF?

Bevor wir CSRF verstehen, müssen wir zwei Voraussetzungen bekannt machen. Zunächst einmal gibt es viele Möglichkeiten, Anmeldeberechtigungen zu überprüfen. Derzeit verwenden die meisten Websites Sitzungssitzungsaufgabenmodus. Einfach ausgedrückt besteht der Sitzungsmechanismus darin, dass der Server ein Schlüssel-Wert-Paar verwendet, um Anmeldeinformationen aufzuzeichnen, und gleichzeitig die Sitzung im Cookie speichert. Die ID (der gerade erwähnte Schlüssel) wird im Cookie gespeichert. Darüber hinaus wissen wir auch, dass HTTP(s)-Anfragen im Browser automatisch Cookies für uns ändern. An den Server übergeben. Auf diese Weise wird bei jeder Anforderung die Sitzungs-ID über das Cookie abgerufen und anschließend die Anmeldeinformationen vom Server abgerufen, um die Überprüfung der Benutzerberechtigungen abzuschließen.

Das ist auch eine gute Funktion. Aber aufgrund Cookies sind wirklich offen, wenn sich ein Benutzer auf Website A anmeldet und beim Besuch von Website B ein A-Cookie sendet. Website-Anfrage, dann enthält diese Anfrage tatsächlich die Anmeldeinformationen des Benutzers auf Website A. Wenn A zu diesem Zeitpunkt an Station B ist Wenn die Website-Anfrage dem Benutzer unbekannt ist, stellt dies einen sehr schwerwiegenden Schaden dar. Der obige Prozess ist ein Cross-Site-Request-Angriff, also Cross-Site Request Forgery CSRF.

Gefahren von CSRF

Eine kurze Zusammenfassung der CSRF-Schwachstellen besteht darin, Schwachstellen bei der Website-Berechtigungsüberprüfung zu nutzen, um Anfragen ohne das Wissen des Benutzers zu senden, um den Zweck des Benutzers zu verschleiern . Die wichtigsten Arten von Angriffen, die von Angreifern mithilfe von CSRF durchgeführt werden, sind folgende:

Der Angreifer kann den Benutzer des Opfers dazu verleiten, alle vom Opfer zugelassenen Statusänderungsvorgänge auszuführen, z. B. Kontodaten aktualisieren, Einkäufe abschließen, Abmelden , und sogar Anmeldung und andere Vorgänge

private Daten der Benutzer abrufen

Mit anderen Schwachstellenangriffen zusammenarbeiten

CSRF-Wurm

unter anderem ihnen Der CSRF-Wurm erzeugt, wie der Name schon sagt, einen Wurmeffekt Der Angriff breitet sich von eins auf zehn und von zehn auf hundert aus. Beispielsweise weisen die Schnittstelle zum privaten Versenden von Nachrichten an Freunde in einer Community und die Schnittstelle zum Abrufen der Freundesliste beide CSRF-Schwachstellen auf. Ein Angreifer kann sie zu einem CSRF-Wurm kombinieren – wenn ein Benutzer eine bösartige Seite besucht, erhält er seine Freundeslisteninformationen CSRF nutzt dann die CSRF-Schwachstelle für private Nachrichten an Freunde und sendet an jeden Freund eine Nachricht, die auf eine schädliche Seite verweist. Solange jemand den Link in dieser Nachricht ansieht, breitet sich der CSRF-Wurm weiter aus, was zu Schäden und Auswirkungen führen kann Die Sache ist riesig!

Verteidigungsmethoden

Aus der obigen Beschreibung können wir erkennen, dass CSRF zwei Merkmale aufweist: die automatische Übertragungsfunktion von Cookies und standortübergreifende Angriffe. Dann können die folgenden Lösungen für diese beiden Funktionen verwendet werden.

Überprüfen Sie das Referrer-Feld

Jeder weiß, dass es im HTTP-Header ein Referer-Feld gibt. Dieses Feld wird verwendet, um die Adresse anzugeben, von der die Anfrage kommt. Indem wir dieses Feld der Anfrage auf der Website überprüfen, können wir feststellen, ob die Anfrage von dieser Website stammt. Wir können alle Anfragen ablehnen, die nicht von dieser Site gestellt werden, und so die Cross-Site-Merkmale von CSRF vermeiden.

const { parse } = require('url');module.exports = class extends think.Logic {
  indexAction() {
    const referrer = this.ctx.referrer();
    const {host: referrerHost} = parse(referrer);
    if(referrerHost !== 'xxx') {
        return this.fail('REFERRER_ERROR');
    }
  }}

Nehmen Sie auch ThinkJS als Beispiel und fällen Sie einfach ein einfaches Urteil in Logic. Diese Methode nutzt die Tatsache aus, dass der Client keinen Referrer erstellen kann. Sie ist zwar einfach, wird jedoch sehr problematisch, wenn die Website mehrere Domänennamen hat oder die Domänennamen häufig geändert werden, und weist auch bestimmte Einschränkungen auf.

Token-Überprüfung

Da CSRF die Fähigkeit des Browsers nutzt, Cookies automatisch weiterzugeben, besteht eine weitere Verteidigungsidee darin, die Überprüfungsinformationen nicht über Cookies weiterzuleiten und zufällige verschlüsselte Zeichenfolgen zu anderen Parametern zur Überprüfung hinzuzufügen . prüfen. Hier gibt es zwei Methoden:

Zufällige Zeichenfolge: Fügen Sie zu jeder Übermittlung einen Parameter hinzu, der vom Server über die Seite gesendet wird. Er wird dem Übermittlungsparameter hinzugefügt Pässe Überprüfen Sie, ob die Parameter konsistent sind, um festzustellen, ob es sich um eine Benutzeranforderung handelt. Da der Angreifer bei einem CSRF-Angriff keine Möglichkeit hat, den Wert der Zufallszeichenfolge im Voraus zu kennen, kann der Server die Anfrage ablehnen, indem er den Wert überprüft.

JWT: Eigentlich außer Neben der Sitzungsanmeldung erfreut sich die Überprüfung der JWT-Token-Anmeldung immer größerer Beliebtheit. Bei dieser Methode wird das Anmeldetoken im Frontend aufgezeichnet und bei jeder Anforderung im Header übergeben. Der Anmeldeüberprüfungsprozess wird durch Hinzufügen eines Authentifizierungsheaders implementiert. Da der Angreifer bei einem CSRF-Angriff den Token-Wert nicht kennen kann, können auf diese Weise auch CSRF-Angriffe verhindert werden. sicherlich Zu den Token-Anmeldemethoden gehören neben JWT auch OAuth und viele andere Methoden.

Das obige ist der detaillierte Inhalt vonWas ist CSRF? Die Gefahren von CSRF und wie man sich dagegen verteidigt. 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