novembre
2007
Avant de commencer, je précise que mysql est une extension vieillissante dans PHP.
PHP5 a vu apparaitre l’extension mysqli (i = improved), qui je rappelle offre un double style ( objet et procédural fonctionnel ), permet de profiter des nouveautés de mysql4.1 (et plus) : transactions, requêtes préparées; et de plus, elle s’avère plus rapide et efficace que sa vieille soeur mysql. PDO permet aussi d’interfacer efficacement avec une base de donnée mysql (entre autres).
Donc, … voici un concept intéressant :
mysql_query($query);
echo mysql_error();
On repère plusieurs erreurs. La première, et elle va être fatale : on affiche pas une erreur en production (on suppose ce code en production).
La deuxième : lorsqu’on attend un entier, on le caste systématiquement avec un (int)$_GET[‘id’], ce qui empêche absolument toute injection.
En interrogeant la page avec ?id=3’%20%3Cimg%20src=http:%20onerror=alert(String.fromCharCode(88,83,83))%3E alors on peut voir apparaitre ceci :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' <img src="http:" onerror="alert(String.fromCharCode(88,83,83))">' at line 1
Et bam, une XSS obtenue par injection SQL, on aura tout vu !
Source : websecurity.ro
Commentaires récents
Archives
- novembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007