macatalan Posté 21 Juin 2006 Posté 21 Juin 2006 (modifié) Bonjour, Voila mon problème, je fais un site avec une partie a inscription ... Mais je crispe sur la sécurité du lieu !!! Ma méfiance est ciblée sur l'injection php, mais je commence a me poser plus de questions que je n'ai de solutions au final. J'ai pas mal lu, htmlentities(), addslash() et autres expressions régulières... j'avais choisi de faire une verif restrictive par expressions régulières mais je butte sérieux... Tant que l'on s'attaque a des choses relativement ciblées, encadré, c'est simple, logique facile ... Mais après avoir presque fini mon petit système je me rends compte d'un détail... j'ai oublié de prendre en compte les caractères accentués, tiret, apostrophes (y'en na pas dans mon prénom, ni mon adresse, zut.... ) et la commence ma misère ! Ma question est comment sécuriseriez vous les entrées d'un formulaire qui va se retrouver sauver dans une BDD... genre le nom et la rue de l'utilisateur ? Je me vois pas capable de faire un regex pour ça et en plus la présence potentiel d'apostrophe rend obligatoire la gestion du slashage (des fois que le truc soit héberger sans magic quotes) et htmlentities() qui modifie ' en ' se fait slasher par mon serveur local ... je comprend plus rien Modifié 21 Juin 2006 par macatalan
QuentinC Posté 21 Juin 2006 Posté 21 Juin 2006 Bonjour, En ce qui concerne les injections SQL, un simple addslashes résoud le problème si tu utilises des apostrophes pour délimiter les chaînes... ou encore mieux, tu laisse les magic quotes le faire pour toi.
captain_torche Posté 21 Juin 2006 Posté 21 Juin 2006 Tu peux également utiliser mysql_real_escape_string, ce qui est plus propre, et t'évite d'utiliser un stripslashes à l'affichage.
real34 Posté 21 Juin 2006 Posté 21 Juin 2006 Voici les deux fonctions que j'utilise. Je ne sais pas si c'est 100% sécurisé, mais cela marche sans problème avec les accents, les apostrophes et les balises HTML (non interprétées) : /* prepare_chaine : Prépare une chaine avant de l'insérer dans la bdd, la sécurité se joue ici */function prepare_chaine($valeur){ // Stripslashes if (get_magic_quotes_gpc()) { $valeur = stripslashes($valeur); } // Protection si ce n'est pas un entier if (!is_numeric($valeur)) { $valeur = mysql_real_escape_string($valeur); } return $valeur;}/* decode_chaine : Prépare une chaine avant de l'afficher / Complément de prepare_chaine */function decode_chaine($chaine){ $chaine = htmlentities($chaine); $chaine = nl2br($chaine); return $chaine;}
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant