Une redirection ouverte (Open Redirect) se produit quand une application accepte une URL en entrée (via GET ou POST) et redirige l'utilisateur vers celle-ci sans aucune validation.
Le code typique vulnérable en PHP :
C'est l'usage principal. L'attaquant envoie un lien qui semble légitime car il commence par le domaine de confiance :
La victime voit "banque-secure.com", a confiance, clique, et se retrouve redirigée vers une fausse page de login.
Certains filtres anti-spam ou pare-feux autorisent les liens vers des domaines connus (Youtube, Google...). Utiliser un Open Redirect permet de masquer un lien malveillant derrière un domaine autorisé.
Si la redirection se fait via JavaScript (window.location = ...) et non via les headers HTTP, on peut parfois injecter :
Ne faites JAMAIS confiance à l'entrée utilisateur pour une redirection.
Vérifiez que l'URL commence par votre propre domaine ou est un chemin relatif (commence par /).