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:48]
Xartrick [Présentation]
failles_web:xss [2017/04/09 15:33] (Version actuelle)
Ligne 73: Ligne 73:
 Sous PHP, je recommande l'utilisation de html_entities() en utilisant le paramètre ENT_QUOTES, elle permet de filtrer toutes les entités HTML comme les chevrons et les guillemets. Sous PHP, je recommande l'utilisation de html_entities() en utilisant le paramètre ENT_QUOTES, elle permet de filtrer toutes les entités HTML comme les chevrons et les guillemets.
  
-''<?php''+<file PHP secure.php> 
 +<?php 
 +    $sInput = $_GET['input']; 
 +     
 +    echo(htmlentities($sInput, ENT_QUOTES)); 
 +?> 
 +</file>
  
-''$sInput = $_GET['input'];''+Maintenant, réessayons notre premier script:
  
-''echo(htmlentities($sInput, ENT_QUOTES));''+<file>./xss.php?input=<script>document.write('XSS');</script></file>
  
-''?>''+<file>&lt;script&gt;document.write(&#039;XSS&#039;);&lt;/script&gt;</file>
  
-Maintenant, réessayons notre premier script:+Vous êtes maintenant protégé !
  
-''./xss.php?input=<script>document.write('XSS');</script>''+====Cas particulier==== 
 +=== Bypass de htmlentities($input, ENT_QUOTES===
  
-''&;lt;script&amp;gt;document.write(&amp;#039;XSS&amp;#039;);&amp;lt;/script&amp;gt;''+<file PHP unsecure.php> 
 +<?php 
 +    $sInput = $_GET['input']; 
 +     
 +    echo('&lt;body onload=&quot;htmlentities($sInput, ENT_QUOTES) . '&quot;>;Xartrick&lt;/body>;'); 
 +?&gt; 
 +&lt;/file>
  
-Vous êtes maintenant protégé !+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.1339692483.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)