„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Cross-Site Request Forgery (CSRF) in JavaScript verstehen und verhindern

Cross-Site Request Forgery (CSRF) in JavaScript verstehen und verhindern

Veröffentlicht am 08.11.2024
Durchsuche:916

Understanding and Preventing Cross-Site Request Forgery (CSRF) in JavaScript

Einführung

In der sich ständig weiterentwickelnden Landschaft der Websicherheit bleibt Cross-Site Request Forgery (CSRF) eine kritische Bedrohung, der Entwickler begegnen müssen, um die Integrität und Sicherheit von Webanwendungen zu gewährleisten. In diesem Blogbeitrag gehen wir näher darauf ein, was CSRF ist, wie es sich auf Ihre Anwendungen auswirken kann, und stellen praktische Lösungen zur Verhinderung von CSRF-Angriffen mithilfe von JavaScript bereit. Am Ende verfügen Sie über ein solides Verständnis von CSRF und wissen, wie Sie Ihre Anwendungen vor dieser häufigen Sicherheitslücke schützen können.

Was ist CSRF?

Cross-Site Request Forgery (CSRF) ist eine Angriffsart, die einen Benutzer dazu verleitet, Aktionen in einer Webanwendung auszuführen, in der er authentifiziert ist. Im Gegensatz zu Cross-Site Scripting (XSS), das das Vertrauen des Benutzers in eine bestimmte Website ausnutzt, nutzt CSRF das Vertrauen der Website in den Browser des Benutzers aus.

Wie CSRF-Angriffe funktionieren

CSRF-Angriffe umfassen typischerweise drei Hauptschritte:

1. Opferauthentifizierung: Das Opfer meldet sich auf einer legitimen Website an (z. B. seiner Bank).

2. Böswillige Anfrage: Der Angreifer bringt das Opfer dazu, eine bösartige Website zu besuchen, die im Namen des Opfers eine Anfrage an die legitime Website sendet.

3. Ausführung: Die legitime Website verarbeitet die Anfrage, da sie scheinbar vom authentifizierten Benutzer stammt, was zu unerwünschten Aktionen wie der Überweisung von Geldern oder der Änderung von Kontodetails führt.

Beispiel eines CSRF-Angriffs

Stellen Sie sich ein Szenario vor, in dem die Website einer Bank Geldtransfers über eine einfache GET-Anfrage zulässt:

Click here to win $1000!

Wenn das Opfer auf diesen Link klickt, während es in seinem Bankkonto angemeldet ist, wird die Überweisung ohne seine Zustimmung ausgeführt.

CSRF-Angriffe verhindern

Um CSRF-Angriffe zu verhindern, können Entwickler mehrere Strategien implementieren:

1. Synchronizer-Token-Muster (CSRF-Tokens)
2. SameSite-Cookies
3. Double-Submit-Cookie

1. Synchronizer-Token-Muster (CSRF-Tokens)

Eine der effektivsten Methoden zur Verhinderung von CSRF-Angriffen ist die Verwendung von CSRF-Tokens. Ein CSRF-Token ist ein einzigartiger, geheimer und unvorhersehbarer Wert, der vom Server generiert und an den Client gesendet wird. Dieses Token muss in jeder vom Client gestellten Statusänderungsanforderung enthalten sein.

Schritt-für-Schritt-Implementierung:

1. Generieren Sie ein CSRF-Token:

const generateCSRFToken = () => {
    return crypto.randomBytes(24).toString('hex');
};

2. Senden Sie das CSRF-Token an den Client:

Fügen Sie in Ihrem HTML-Formular das CSRF-Token als verstecktes Feld ein:

3. Validieren Sie das CSRF-Token auf dem Server:
Validieren Sie auf der Serverseite das Token für jede Statusänderungsanforderung:

const validateCSRFToken = (req, res, next) => {
    const token = req.body.csrf_token;
    if (token === req.session.csrfToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

2. SameSite-Cookies

Das SameSite-Attribut für Cookies kann CSRF-Angriffe abschwächen, indem es steuert, wie Cookies bei Cross-Site-Anfragen gesendet werden.

res.cookie('session', 'value', { sameSite: 'Strict' });

3. Cookie doppelt senden

Die Double-Submit-Cookie-Methode beinhaltet das Senden des CSRF-Tokens sowohl als Cookie als auch als Anforderungsparameter.

Schritt-für-Schritt-Implementierung:

1. Legen Sie das CSRF-Token als Cookie fest:

res.cookie('csrfToken', csrfToken, { httpOnly: true });

** Das Token in Anfragen einbeziehen: **

** 3. Validieren Sie das Token auf dem Server: **

const validateCSRFToken = (req, res, next) => {
    const token = req.cookies.csrfToken;
    const bodyToken = req.body.csrf_token;
    if (token && token === bodyToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

Abschluss

Cross-Site Request Forgery (CSRF) ist eine ernsthafte Bedrohung, die die Sicherheit Ihrer Webanwendungen gefährden kann. Indem Sie verstehen, wie CSRF-Angriffe funktionieren, und robuste Präventionstechniken wie CSRF-Tokens, SameSite-Cookies und Double-Submit-Cookies implementieren, können Sie Ihre Anwendungen und Benutzer vor dieser häufigen Schwachstelle schützen. Priorisieren Sie in Ihrem Entwicklungsprozess stets Best Practices für die Sicherheit, um ein sicheres Benutzererlebnis zu gewährleisten.

Implementieren Sie diese CSRF-Präventionstechniken noch heute in Ihren JavaScript-Anwendungen und schützen Sie die Daten Ihrer Benutzer. Teilen Sie Ihre Gedanken und Erfahrungen in den Kommentaren unten. Vergessen Sie nicht, weitere Tipps und Tricks zur Websicherheit zu befolgen!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/rigalpatel001/understanding-and-preventing-cross-site-request-forgery-csrf-in-javascript-2ne0?1 Bei Verstößen wenden Sie sich bitte an Study_golang@163 .com, um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3