[ 139916 ]
[ 38.103.63.16 ]
PHP/MySQL - Sécuriser $_SERVER['PHP_SELF']La variable $_SERVER['PHP_SELF'], comme vous le savez, sert souvent à nos cher formulaires. De façon à reprendre l'adresse URI dans laquelle notre formulaire va être traité. Mais cette variable est facilement falsifiable afin d'insérer des scripts malicieux comme du javascript, afin de pirater votre système. Voici un exemple simple de formulaire utilisant notre variable : <form action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="submitted" value="1" /> <input type="submit" value="Submit" /> </form> Si nous plaçons ce script par exemple à cette adresse <form action="/phpself.php"> <input type="hidden" name="submitted" value="1" /> <input type="submit" value="Submit" /> </form> Et bien en fait, non. Ainsi, si on interroge notre page via <form action="/phpself.php/script_ici"> <input type="hidden" name="submitted" value="1" /> <input type="submit" value="Submit" /> </form> Et donc bien entendu avec
<form action="/phpself.php/"><script>alert('xss')</script><data">
<input type="hidden" name="submitted" value="1" />
<input type="submit" value="Submit" />
</form>
La partie "data" rajoutée sert à fermer le tag du formulaire, d'une manière absolument pas conventionnelle ni même valide, mais c'est de cette manière que rien ne s'affiche à l'écran, sur le navigateur. Il est pourtant possible de se protéger, en inscrivant ceci : <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>"> <input type="hidden" name="submitted" value="1" /> <input type="submit" value="Submit" /> </form> Voici notre formulaire ainsi protégé. (0) commentaires - Voir/Editer |