CSRF-Schutz
Generieren und validieren Sie CSRF-Tokens in Formularen, um gefälschte Anfragen zu verhindern.
CSRF-Schutz ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist CSRF?
Cross-Site-Request-Forgery (CSRF) bringt authentifizierte Benutzer dazu, unerwünschte Aktionen abzusenden. Eine schädliche Seite sendet mit der aktiven Sitzung des Opfers eine gefälschte Anfrage an Ihre Website.
So funktioniert CSRF
Szenario: Alice ist bei bank.com angemeldet. Sie besucht malicious.com, wo sich ein verstecktes Formular befindet, das automatisch eine Überweisungsanfrage an bank.com sendet und dabei ihr Sitzungscookie verwendet.
CSRF-Token
Die Abwehr besteht aus einem geheimen, sitzungsbezogenen Token, das in jedes Formular eingebettet wird. Der Server validiert das Token bei POST-, PUT-, PATCH- und DELETE-Anfragen. Eine gefälschte Anfrage von einer anderen Herkunft kann das Token nicht auslesen.
@csrf in Laravel Blade
Fügen Sie die Direktive @csrf jedem HTML-Formular hinzu, das Daten verändert.
<form method="POST" action="/transfer">
@csrf
<input name="amount" type="number">
<button>Transfer</button>
</form>CSRF-Middleware
Die Laravel-Middleware VerifyCsrfToken prüft den Header X-CSRF-TOKEN oder das Feld _token bei allen Nicht-GET-Anfragen in der web-Middleware-Gruppe.
CSRF bei AJAX
Lesen Sie bei AJAX-Anfragen das Token aus dem Meta-Tag und senden Sie es als Header.
// In the HTML head:
<meta name="csrf-token" content="{{ csrf_token() }}">
// In JavaScript (Axios):
axios.defaults.headers.common["X-CSRF-TOKEN"] =
document.querySelector("meta[name=csrf-token]").content;Routen ausschließen
API-Routen, die Sanctum-Token verwenden, werden normalerweise vom CSRF-Schutz ausgeschlossen, da sie statt Cookies eine tokenbasierte Authentifizierung verwenden.
<?php
// In VerifyCsrfToken $except:
protected $except = [
"api/*",
"webhooks/*",
];SameSite-Cookie-Attribut
Das Setzen von SameSite=Strict oder Lax für das Sitzungscookie bietet in modernen Browsern eine zusätzliche Schutzebene gegen CSRF.
Double-Submit-Cookie-Muster
Eine alternative CSRF-Abwehr für APIs: Senden Sie das Token sowohl als Cookie als auch als Anfrage-Header. Der Server prüft, ob beide übereinstimmen. Ursprungsübergreifende Anfragen können Cookies nicht auslesen.
CSRF im API-Kontext
REST-APIs, die sich mit Bearer-Token (Sanctum, JWT) authentifizieren, sind nicht anfällig für CSRF, da die Token in localStorage gespeichert und nicht automatisch vom Browser gesendet werden.
CSRF testen
Laravel-Test-Hilfsfunktionen fügen automatisch CSRF-Token ein. Sie können außerdem testen, dass ungeschützte POST-Anfragen abgewiesen werden.
<?php
// With token:
$this->post("/transfer", ["_token" => csrf_token(), "amount" => 100]);
// Simulating CSRF attack (no token):
$this->withoutMiddleware(VerifyCsrfToken::class)->post("/transfer", [...]);Zusammenfassung
Der CSRF-Schutz erfordert ein verstecktes Token in jedem Formular, das den Zustand ändert. Laravel übernimmt dies automatisch mit @csrf. Fügen Sie bei AJAX das Token als HTTP-Header hinzu. API-Routen mit Bearer-Token sind davon nicht betroffen.
Kurztest
Wie fügen Sie einem Laravel-Blade-Formular CSRF-Schutz hinzu?
Häufig gestellte Fragen
Ist die Lektion „CSRF-Schutz“ kostenlos?
Ja — der vollständige Text von „CSRF-Schutz“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „CSRF-Schutz“?
Generieren und validieren Sie CSRF-Tokens in Formularen, um gefälschte Anfragen zu verhindern. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „CSRF-Schutz“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Cross-Site-Scripting (XSS) verhindern
- SQL-Injection und parametrisierte Abfragen
- CSRF-Schutz
- Passwörter sicher speichern