Überblick
revolution/laravel-fetch-metadata ist ein Middleware-Paket, das die vom Browser gesendetenSec-Fetch-*-HTTP-Header überprüft. Sie können damit anhand von Ursprung, Modus, Ziel und ob die Anfrage durch eine Nutzeraktion ausgelöst wurde, steuern, welche Requests zugelassen werden.
Indem Sie die im Browser eingebauten Sicherheitsfunktionen nutzen, verhindern Sie bösartige Requests von unerlaubten Ursprüngen, ohne die Nutzererfahrung legitimer Anwender zu beeinträchtigen.
In Laravel 13 wird für die Origin-Prüfung des CSRF-Schutzes nun der Header
Sec-Fetch-Site verwendet. Details siehe CSRF-Schutz.Installation
Middleware-Alias registrieren
Registrieren Sie inbootstrap/app.php die Aliase der Middleware.
Erläuterung der Middlewares
SecFetchSite
Der HeaderSec-Fetch-Site gibt die Beziehung zwischen Herkunft der Anfrage und Ziel-Origin an. Standardmäßig werden nur same-origin und none (direkter Zugriff) erlaubt.
| Wert | Beschreibung |
|---|---|
same-origin | Request vom selben Origin |
same-site | Request von derselben Site (z. B. Subdomains) |
cross-site | Request von einer anderen Site |
none | Navigationsbezogene Requests, z. B. wenn der Nutzer die URL direkt eingibt |
SecFetchMode
Der HeaderSec-Fetch-Mode gibt den Modus der Anfrage an. Standardmäßig werden navigate und cors erlaubt.
| Wert | Beschreibung |
|---|---|
navigate | Navigations-Requests, z. B. Klick auf Links oder Formularabsenden |
cors | CORS-Request |
no-cors | no-cors-Request |
same-origin | Same-origin-Request |
websocket | Anfrage zur WebSocket-Verbindung |
SecFetchDest
Der HeaderSec-Fetch-Dest gibt den Ressourcentyp des Anfrageziels an.
Details siehe MDN-Dokumentation.
SecFetchUser
Der HeaderSec-Fetch-User gibt an, ob die Anfrage durch eine Nutzeraktion ausgelöst wurde. Der einzige Wert ist ?1 (Nutzeraktion vorhanden).
Anwendungsbeispiele im Routing
Grundlegende Verwendung
Erlaubte Werte per Parameter festlegen
Mehrere Parameter angeben
Ohne Alias
Mehrere Middlewares kombinieren
Fehlerbehandlung
Wenn der Wert einesSec-Fetch-*-Headers ungültig ist, wird eine Symfony\Component\HttpKernel\Exception\BadRequestHttpException geworfen.
In bootstrap/app.php können Sie die Antwort anpassen.
Zusammenhang mit dem CSRF-Schutz
In Laravel 13 nimmt die MiddlewarePreventRequestForgery als ersten Schritt des CSRF-Schutzes eine Origin-Prüfung mit dem Header Sec-Fetch-Site vor. Dieses Paket nutzt Fetch-Metadata-Header darüber hinaus feingranular und stärkt die Sicherheit Ihrer Anwendung.
Details siehe CSRF-Schutz.
Aktuelle Informationen finden Sie im GitHub-Repository.