APIs und Anfragen
Angriffe, die die Form einer Anfrage oder das Vertrauen missbrauchen, das ein Browser in Ihre Seite setzt. Sie werden leicht übersehen, weil der normale Client sie nie sendet.
Checkliste
- Zustandsverändernde Anfragen gegen CSRF schützen. Wenn Sie sich über Cookies authentifizieren, braucht jeder zustandsverändernde Endpunkt ein CSRF-Token oder eine strikte SameSite-Cookie-Richtlinie. Wenn Sie mit einem Bearer-Token im Authorization-Header arbeiten (nicht mit einem automatisch mitgesendeten Cookie), gilt klassisches CSRF nicht. Das ist ein Grund, diesen Weg zu bevorzugen.
- Login-CSRF schließen. Auch der Anmeldevorgang kann gefälscht werden. Binden Sie den OAuth-
statemit einem Cookie an den Browser, das beim Start gesetzt und beim Callback geprüft wird. Siehe Authentifizierung. - CORS absichern. Spiegeln Sie nie einen beliebigen
Originzurück und liefern Sie nieAccess-Control-Allow-Origin: *zusammen mit Credentials. Verwenden Sie eine explizite Allowlist von Origins sowie nur die Methoden und Header, die Sie brauchen. Ein Standard "alles erlauben" ist ein häufiger Fehler aus Vorlagen. - Mass Assignment unterbinden. Übergeben Sie den Request-Body nie direkt an ein Datenbank-Update. Akzeptieren Sie eine explizite Allowlist schreibbarer Felder, damit ein Benutzer nicht
{"role":"admin"}oder{"plan":"enterprise"}senden und seine Rechte erhöhen kann. Markieren Sie schreibgeschützte Felder und ignorieren Sie unbekannte. - Rechte und Bezahlstatus nur aus einem vertrauenswürdigen Ereignis gewähren. Ein Tarif oder Guthabenstand sollte sich nur durch einen verifizierten Zahlungs-Webhook oder eine Admin-Aktion ändern, nie durch einen Wert in einer Benutzeranfrage.
- Webhooks verifizieren. Prüfen Sie die Signatur des Anbieters über den rohen Body, bestätigen Sie, dass Betrag und Währung den Erwartungen entsprechen, und machen Sie jedes Ereignis idempotent, damit ein Replay nichts doppelt anwendet.
- Content-Types und Größen validieren. Lehnen Sie unerwartete Content-Types ab und begrenzen Sie die Body-Größe, bevor Sie parsen.
Testvorgehen
- Fügen Sie einer Update-Anfrage
role,is_admin,planodercreditshinzu und bestätigen Sie, dass der Server sie ignoriert. - Senden Sie eine Cross-Origin-Anfrage und bestätigen Sie, dass CORS Ihren Origin nicht zurückspiegelt.
- Spielen Sie einen Webhook zweimal ab und bestätigen Sie, dass er nur einmal angewendet wird.