on pourrait egalement rajouter aux points que tu as decrit le SQL inecting
brievement, quand on verifie un login, un pass, ou quand o pot un message, bref, des trucs qui vont appeler un mysql_query
quand on veut pas se casser la tete, on faut notre mysql_query("SELECT passwd FROM table WHERE login = '$login'");
sauf que, $login vaut "admin UNION passwd as 'toto'". ensuite, le met toto a mon passwd, et j'ai recupere une session.
la solution est donc d'utiliser mysql_real_escape_string() qui rajoute des caracteres d'echappement devant les quotes et doubles quotes.
mais, ce n'est qu'un debut
on pourrait egalement empecher l'utilisation des caracteres d'espacement dans les login et passwd (ce qui est couremment fait deja)
ensuite, quand tu recuperes tes infos, tu peux enlever tous les espaces, tabulations, etc. (attention aussi a matcher les ecritures hexa, les %20, je ne sais pas si c'est interprete a la reception du post ou par le mysql_query, mais mieux vaut ne pas prendre de risques, ou prendre le temps de verifier)
ces types d'injections marchent en post tout aussi bien qu'en get (en les rentrant dans l'url)
une seconde faille (enorme) que l'on ne peut oublier: les scripts d'upload
on en trouve partout sur le web, et certains pretendent meme qu'ils sont securise (sous pretextes qu'ils verifie le mime-type ou le magic-number, imposent une extension, resize, etc.)
maintenant, je vous invite a lancer un gimp, creer une image de taille 1*1px
ensuite, dans les options avancees, vous pouvez ajouter un commentaire
de base, vous avez creted with gimp, mais, pour le fun, on peut metre un <?php phpinfo(); ?>
enregisrtez l'image en toto.jpg par exemple
votre image est genere avec son magic number de php
suivant les cas, on peut:
- si le script ne check pas l'extension .php: on renomme le fichier en .php, on l'envoit
- si le script empeche toute forme de langages web: on renomme en .jpg.gzip, on l'envoit
- si le script veut absolument un .jpg: il est probable que le fichier soit tout de meme interprete (il me semble que ca depend de la conf du serv), enfin, j'ai deja tente, et ca a deja marche
ensuite, il suffit s'aller consulter "l'image"
mais, certains scripts ne gerent meme pas le migic number present a chaque debut de fichiers, on peut donc directement creer son .php
comment regler le probleme:
lire le fichier comme un txt et regarder si a l'interieur, on n'aurait pas glisser quelques <? ?> <?php
ne pas uploader les images sur son serveur
j'ai egalement entendu parle de fichiers avec dans leurs noms un (test.php.jpg par exemple), permettant de faire sauter la fin de l'extension (celle qui sera verifiee) lors de la copie dans son repertoire definitif, mais la, je en suis sur de rien et je n'ai jamais verifier.
enfin, un preg_match ou preg_replace devrait faire l'affaire
enfin, ce ne sont que les deux failles qui me sont venue a l'esprit en lisant ton post, mais il y en as d'autres
un complement sur les XSS: j'ai lu quelques articles recemment a ce sujet, en encodant ses caracteres a coup de %[hexa], on a plus de chances de reussir
de meme, plutot que de mettre java script en un seul mot on peut ecrire java en fin de ligne et script sur le debut de la suivante.
et sur les cookies de session: se mefier des SSID seuls egalement (on peut les recuperer par XSS et faire de meme qu'avec les login)
voilou, je repasserai si d'autres choses me reviennent