Outils d'utilisateurs

Outils du Site


failles_web:xss

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

failles_web:xss [2012/06/14 18:49]
Xartrick [Protection]
failles_web:xss [2017/04/09 15:33] (Version actuelle)
Ligne 88: Ligne 88:
  
 Vous êtes maintenant protégé ! Vous êtes maintenant protégé !
 +
 +====Cas particulier====
 +=== Bypass de htmlentities($input, ENT_QUOTES) ===
 +
 +<file PHP unsecure.php>
 +<?php
 +    $sInput = $_GET['input'];
 +    
 +    echo('<body onload="' . htmlentities($sInput, ENT_QUOTES) . '">Xartrick</body>');
 +?>
 +</file>
 +
 +Dans ce cas présent, cette protection serait inefficace.
 +
 +<file>./xss.php?input=alert(1);</script></file>
 +
 +<file><body onload="alert(1);">Xartrick</body></file>
 +
 +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>
failles_web/xss.1339692546.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)