Skip to main content

Vue d’ensemble

revolution/laravel-fetch-metadata est un package de middleware de sécurité qui valide les en-têtes HTTP Sec-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.
Pour la spécification détaillée de Fetch Metadata, consultez la documentation MDN.

Installation

Enregistrement des alias de middleware

Enregistrez les alias de middleware dans bootstrap/app.php.
Vous pouvez n’utiliser qu’une partie des middlewares. Les noms d’alias sont librement modifiables.

Description des middlewares

SecFetchSite

L’en-tête Sec-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. Pour plus de détails, consultez la documentation MDN.

SecFetchMode

L’en-tête Sec-Fetch-Mode indique le mode de la requête. Par défaut, navigate et cors sont autorisés. Pour plus de détails, consultez la documentation MDN.

SecFetchDest

L’en-tête Sec-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ête Sec-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).
L’utilisation du middleware SecFetchUser bloque également les crawlers de moteurs de recherche et les agents IA. Ne l’utilisez pas sur des pages publiques qui doivent être indexées.

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ête Sec-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 middleware PreventRequestForgery 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.
Dernière modification le 13 juillet 2026