Overzicht
revolution/laravel-fetch-metadata is een pakket met beveiligingsmiddleware die deSec-Fetch-* HTTP-headers valideert die browsers versturen. Je kunt bepalen welke requests worden toegestaan op basis van de herkomst, modus, bestemming en of er een gebruikersactie aan ten grondslag ligt.
Door gebruik te maken van beveiligingsfuncties die in de browser zijn ingebouwd, kun je kwaadaardige requests van ongeautoriseerde origins blokkeren zonder de ervaring van legitieme gebruikers te verstoren.
In Laravel 13 wordt de
Sec-Fetch-Site-header gebruikt voor de Origin-validatie van de CSRF-bescherming. Zie CSRF-bescherming voor meer details.Installatie
Middleware-aliassen registreren
Registreer de middleware-aliassen inbootstrap/app.php.
Uitleg van de middleware
SecFetchSite
DeSec-Fetch-Site-header geeft de relatie aan tussen de herkomst van het request en de origin van het doel. Standaard worden alleen same-origin en none (directe toegang) toegestaan.
Zie de MDN-documentatie voor meer details.
SecFetchMode
DeSec-Fetch-Mode-header geeft de modus van het request aan. Standaard worden navigate en cors toegestaan.
Zie de MDN-documentatie voor meer details.
SecFetchDest
DeSec-Fetch-Dest-header geeft het resourcetype van de bestemming van het request aan.
Zie de MDN-documentatie voor meer details.
SecFetchUser
DeSec-Fetch-User-header geeft aan of het request door een gebruikersactie is gestart. De enige waarde is ?1 (gestart door gebruikersactie).
Voorbeelden in routing
Basisgebruik
Toegestane waarden opgeven via parameters
Meerdere parameters opgeven
Zonder alias
Meerdere middleware combineren
Foutafhandeling
Als de waarde van eenSec-Fetch-*-header ongeldig is, wordt een Symfony\Component\HttpKernel\Exception\BadRequestHttpException gegooid.
Je kunt de response aanpassen in bootstrap/app.php.
Relatie met CSRF-bescherming
In Laravel 13 voert dePreventRequestForgery-middleware als eerste stap van de CSRF-bescherming een Origin-validatie uit op basis van de Sec-Fetch-Site-header. Met dit pakket kun je de Fetch Metadata-headers op een fijnmaziger niveau inzetten en de beveiliging van je applicatie verder versterken.
Zie CSRF-bescherming voor meer details.
Zie de GitHub-repository voor de meest recente informatie.