Qu'est-ce qu'une faille Open Redirect ?


La redirection ouverte (ou Open Redirect) se produit lorsqu'une page Web vulnérable est redirigée vers une page non conforme et malicieuse qui peut compromettre l'utilisateur. Les attaques de redirection ouvertes viennent généralement avec une attaque de phishing car le lien vulnérable modifié est identique au site original, ce qui augmente la probabilité de succès pour de l'attaque par phishing.
Cette vulnérabilité est souvent présente dans les applications web où la redirection est définie en paramètre « GET », dans l’URL.

Exemple :
https://www.monsite.com?redirectURL=https://www.httpcs.com
Dans cet exemple , monsite.com doit rediriger l’utilisateur vers le site httpcs.com. Que se passe-t-il si une personne malintentionnée modifie l’URL de redirection ?

https://www.monsite.com?redirectURL=https://www.siteMalicieux.com
A présent le site redirige l'utilisateur vers un site malveillant.

Code PHP vulnérable :

$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);

Ici, il n’y a aucun contrôle sur les entrées de l’utilisateur. Ce dernier peut donc modifier l’URL de redirection vers un site malveillant via une faille Open Redirect.



Comment se protéger contre les failles Open Redirect ?


Il faut contrôler au maximum les entrées d’un utilisateur et appliquer le principe du « Never trust a user ».