Vue d’ensemble
revolution/laravel-fetch-metadata est un package de middleware de sécurité qui valide les en-têtes HTTPSec-Fetch-* envoyés par le navigateur. Vous pouvez contrôler les requêtes autorisées en fonction de leur origine, mode, destination et de la présence ou non d’une interaction utilisateur.
En tirant parti des fonctionnalités de sécurité intégrées au navigateur, vous pouvez bloquer les requêtes malveillantes provenant d’origines non autorisées sans nuire à l’expérience des utilisateurs légitimes.
Dans Laravel 13, l’en-tête
Sec-Fetch-Site est désormais utilisé pour la vérification d’Origin dans la protection CSRF. Pour plus de détails, consultez la protection CSRF.Installation
Enregistrement des alias de middleware
Enregistrez les alias de middleware dansbootstrap/app.php.
Description des middlewares
SecFetchSite
L’en-têteSec-Fetch-Site indique la relation entre l’origine de la requête et l’origine cible. Par défaut, seules same-origin et none (accès direct) sont autorisées.
| Valeur | Description |
|---|---|
same-origin | Requête depuis la même origine |
same-site | Requête depuis le même site (sous-domaines, etc.) |
cross-site | Requête depuis un site différent |
none | Requête d’origine navigation, comme la saisie directe d’une URL par l’utilisateur |
SecFetchMode
L’en-têteSec-Fetch-Mode indique le mode de la requête. Par défaut, navigate et cors sont autorisés.
| Valeur | Description |
|---|---|
navigate | Requête de navigation comme un clic sur un lien ou un envoi de formulaire |
cors | Requête CORS |
no-cors | Requête no-cors |
same-origin | Requête same-origin |
websocket | Requête de connexion WebSocket |
SecFetchDest
L’en-têteSec-Fetch-Dest indique le type de ressource cible de la requête.
Pour plus de détails, consultez la documentation MDN.
SecFetchUser
L’en-têteSec-Fetch-User indique si la requête a été initiée par une interaction utilisateur. La seule valeur possible est ?1 (interaction utilisateur présente).
Exemples d’utilisation dans le routage
Utilisation de base
Spécifier les valeurs autorisées via un paramètre
Spécifier plusieurs paramètres
Sans utiliser d’alias
Combiner plusieurs middlewares
Gestion des erreurs
Lorsque la valeur d’un en-têteSec-Fetch-* est incorrecte, une exception Symfony\Component\HttpKernel\Exception\BadRequestHttpException est levée.
Vous pouvez personnaliser la réponse dans bootstrap/app.php.
Relation avec la protection CSRF
Dans Laravel 13, le middlewarePreventRequestForgery effectue désormais la vérification d’Origin via l’en-tête Sec-Fetch-Site comme première étape de la protection CSRF. Ce package permet d’aller plus loin en exploitant les en-têtes Fetch Metadata avec une granularité plus fine pour renforcer la sécurité de votre application.
Pour plus de détails, consultez la protection CSRF.
Pour les informations à jour, consultez le dépôt GitHub.