Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
failles_web:xss [2012/06/18 20:03] Xartrick |
failles_web:xss [2017/04/09 15:33] (Version actuelle) |
||
|---|---|---|---|
| Ligne 89: | Ligne 89: | ||
| Vous êtes maintenant protégé ! | Vous êtes maintenant protégé ! | ||
| - | ====Cas rare==== | + | ====Cas particulier==== |
| + | === Bypass de htmlentities($input, ENT_QUOTES) === | ||
| <file PHP unsecure.php> | <file PHP unsecure.php> | ||
| Ligne 95: | Ligne 96: | ||
| $sInput = $_GET['input']; | $sInput = $_GET['input']; | ||
| - | echo('<body onload="' . $sInput . '">Xartrick</body>'); | + | echo('<body onload="' . htmlentities($sInput, ENT_QUOTES) . '">Xartrick</body>'); |
| ?> | ?> | ||
| </file> | </file> | ||
| Ligne 106: | Ligne 107: | ||
| Ceci affichera bien un « 1 ». | Ceci affichera bien un « 1 ». | ||
| + | Ceci est en faite dû aux évènements HTML. | ||
| + | |||
| + | === Le cas de PHP_SELF === | ||
| + | |||
| + | <file PHP unsecure_form.php> | ||
| + | <form method="POST" action="<?php echo $_SERVER[PHP_SELF] ?>"> | ||
| + | ... | ||
| + | </form> | ||
| + | </file> | ||
| + | |||
| + | $_SERVER[PHP_SELF] a pour valeur le nom du script courant, ainsi de nombreux développeurs l'utilisent dans leurs formulaires : si ils modifient le nom du fichier, inutile de toucher au code. | ||
| + | Seulement si on interroge la page suivante : | ||
| + | <file>www.monsite.fr/form.php/"><script>alert("Zenk Security");</script><foo </file> | ||
| + | Le code s’exécutera coté client, '<foo' est utilisé en fin d'url afin de ne pas laisser le chevron de fermeture de 'form' au milieu de la page. | ||
| + | |||
| + | Pour pallier au problème, il suffit d'utiliser à la place le code suivant : | ||
| + | <file PHP>echo htmlentities($_SERVER['PHP_SELF']);</file> | ||