Protection Open Redirect
Ce que ça fait
Intercepte toutes les réponses 3xx et valide l'en-tête Location.
Si la destination de la redirection est un hôte externe absent de la liste autorisée, le middleware retourne HTTP 400.
Protège contre les attaques de phishing où un attaquant forge un lien du type
https://votresite.fr/login?next=https://evil.com qui redirige silencieusement l'utilisateur ailleurs.
Fonctionnement
Une destination de redirection est considérée sûre si :
- C'est un chemin relatif (
/tableau-de-bord,../profil) — toujours sûr - L'hôte est localhost ou loopback (
localhost,127.x.x.x,[::1], IPv6 mappé IPv4) — toujours sûr - L'hôte correspond à une entrée de
with_allowed_hosts(exact ou sous-domaine wildcard)
Toute autre URL absolue est bloquée avec HTTP 400.
Configuration
Pas de configuration dédiée — le middleware lit with_allowed_hosts automatiquement :
.middleware(|m| {
m.with_allowed_hosts(|h| {
h.enabled(true)
.host("monsite.fr")
.host(".monsite.fr") // monsite.fr + tous ses sous-domaines
})
})
Le middleware open redirect est toujours actif et utilise la même liste d'hôtes.
URLs protocol-relative
Les URLs commençant par // (ex : //evil.com/chemin) sont traitées comme absolues et soumises à la même vérification.
Elles sont bloquées sauf si l'hôte est dans la liste autorisée.