Panoramica
revolution/laravel-fetch-metadata è un pacchetto middleware di sicurezza che verifica le header HTTPSec-Fetch-* inviate dal browser. Puoi controllare quali richieste ammettere in base a origine, modalità, destinazione e presenza di interazione utente.
Sfruttando le funzionalità di sicurezza integrate nel browser puoi bloccare richieste malevole da origini non autorizzate senza compromettere l’esperienza degli utenti legittimi.
In Laravel 13 la verifica dell’Origin nella protezione CSRF utilizza la header
Sec-Fetch-Site. Per i dettagli consulta Protezione CSRF.Installazione
Registrazione degli alias di middleware
Registra gli alias dei middleware inbootstrap/app.php.
Descrizione dei middleware
SecFetchSite
La headerSec-Fetch-Site indica la relazione tra l’origine della richiesta e quella del target. Per impostazione predefinita ammette solo same-origin e none (accesso diretto).
| Valore | Descrizione |
|---|---|
same-origin | Richiesta dalla stessa origine |
same-site | Richiesta dallo stesso sito (es. da sottodomini) |
cross-site | Richiesta da un sito diverso |
none | Richieste che nascono dalla navigazione, ad esempio quando l’utente digita l’URL |
SecFetchMode
La headerSec-Fetch-Mode indica la modalità della richiesta. Per impostazione predefinita ammette navigate e cors.
| Valore | Descrizione |
|---|---|
navigate | Richieste di navigazione, es. click su link o invio di form |
cors | Richiesta CORS |
no-cors | Richiesta no-cors |
same-origin | Richiesta same-origin |
websocket | Richiesta di connessione WebSocket |
SecFetchDest
La headerSec-Fetch-Dest indica il tipo di risorsa destinazione della richiesta.
Per i dettagli consulta la documentazione MDN.
SecFetchUser
La headerSec-Fetch-User indica se la richiesta è stata avviata da un’azione dell’utente. Il valore è solo ?1 (interazione utente presente).
Esempi di utilizzo nelle rotte
Uso base
Specifica dei valori consentiti tramite parametro
Specifica di più parametri
Senza usare gli alias
Combinare più middleware
Gestione degli errori
Se il valore di una headerSec-Fetch-* non è valido, viene lanciata Symfony\Component\HttpKernel\Exception\BadRequestHttpException.
Puoi personalizzare la risposta in bootstrap/app.php.
Relazione con la protezione CSRF
In Laravel 13 il middlewarePreventRequestForgery esegue la verifica dell’Origin tramite la header Sec-Fetch-Site come primo passo della protezione CSRF. Questo pacchetto sfrutta le header Fetch Metadata a una granularità ancora maggiore, rafforzando la sicurezza dell’applicazione.
Per i dettagli consulta Protezione CSRF.
Per le informazioni più aggiornate consulta la repository su GitHub.