String qui contient un ' ou un \ - PHP - Programmation
Marsh Posté le 13-07-2005 à 14:50:48
Ben ouais Non seulement ça plante, mais en plus ça fait une belle faille
Franchement... Ce problème est abordé tout de suite, dès qu'on t'apprend mysql_query. C'est la faille la plus répandu, celle qui fait l'objet de plus d'article. C'est quand-même étonnant que tu ne sois pas tombé dessus. T'as pas dû beaucoup chercher
Marsh Posté le 13-07-2005 à 14:52:01
désolé, je suis un autodidacte
Est-ce que tu peux m'expliquer comment contrer ça ?
Marsh Posté le 13-07-2005 à 14:53:21
A toi de chercher Je suis aussi autodidacte, et c'est la première chose que j'ai pu lire
Marsh Posté le 13-07-2005 à 14:53:54
Apprend à chercher, sinon on te verra beaucoup trop souvent ici
Marsh Posté le 13-07-2005 à 14:55:04
Et les méthodes que j'ai énoncées, elles sont pas bonnes ?
EDIT: j'ai cherché, mais je ne trouve rien
J'ai cherché sur le forum, mais c'est 3 caractères minimumu : je ne vois pas quoi mettre comme termes pour être pertinent
Marsh Posté le 13-07-2005 à 14:56:51
Non
Regarde la doc sur http://fr.php.net/manual/en/function.mysql-query.php, et particulièrement certains exemples
Marsh Posté le 13-07-2005 à 15:00:15
voire un mysql_real_escape_string, vu que c'est pour mysql...
Marsh Posté le 13-07-2005 à 15:14:00
skeye a écrit : voire un mysql_real_escape_string, vu que c'est pour mysql...:o |
Je viens de regarder, c'est intéressant, mais au final, ça fait quasiment la même chose que addslashes, non ?
Marsh Posté le 13-07-2005 à 15:14:58
nero27 a écrit : Je viens de regarder, c'est intéressant, mais au final, ça fait quasiment la même chose que addslashes, non ? |
en plus spécifique...ça existe, autant en profiter!
Marsh Posté le 13-07-2005 à 15:16:02
nero27 a écrit : Je viens de regarder, c'est intéressant, mais au final, ça fait quasiment la même chose que addslashes, non ? |
Ca escape genre \n en plus, ça peut être utile
Marsh Posté le 13-07-2005 à 15:17:55
Ah oui, en effet.
Par contre, ça va me donner un boulot monstre : ajouter sur tout le site stripslashes pour l'affichage
Marsh Posté le 13-07-2005 à 15:20:25
pour l'affichage, c'est :
echo htmlspecialchars(stripslashes($pouet), ENT_NOQUOTES); |
Marsh Posté le 13-07-2005 à 15:23:43
blablagerezkljrez a écrit : Pauvre petit |
Niveau sécurité, ça ne craint rien car ça ne concerne pas les login de connexion
Marsh Posté le 13-07-2005 à 17:12:58
FlorentG a écrit : pour l'affichage, c'est :
|
Euh a priori stripslashes est inutile pour l'affichage, si y'a des slashes stockés dans la base c'est que le magic_quotes_gpc est activé et qu'un addslashes/mysql_real_escape_string est fait par dessus, sans stripslashes intermédiaire (à l'envoi, voir l'exemple avec quote_smart() dans la doc de mysql_real_escape_string).
Sinon, perso je fais un htmlentities sans ENT_NOQUOTES. Y'a une raison particulière pour htmlspecialchars plutôt que htmlentities ("htmlspecialchars suffit" ?) et le ENT_NOQUOTES ("pas besoin de convertir les quotes" ?). Merci d'avance.
Marsh Posté le 13-07-2005 à 18:25:01
sielfried a écrit : Euh a priori stripslashes est inutile pour l'affichage, si y'a des slashes stockés dans la base c'est que le magic_quotes_gpc est activé et qu'un addslashes/mysql_real_escape_string est fait par dessus, sans stripslashes intermédiaire (à l'envoi, voir l'exemple avec quote_smart() dans la doc de mysql_real_escape_string). |
ouuuuups C'est effectivement une erreur de ma part
sielfried a écrit : Sinon, perso je fais un htmlentities sans ENT_NOQUOTES. Y'a une raison particulière pour htmlspecialchars plutôt que htmlentities ("htmlspecialchars suffit" ?) et le ENT_NOQUOTES ("pas besoin de convertir les quotes" ?). Merci d'avance. |
Le problème d'htmlspecialchars, c'est qu'il convertit tout (genre les 'é' en é. Moi ça m'intéresse pas, je fous tout en unicode Donc j'ai juste besoin d'escaper les &, < et >. Après y'a un autre cas de figure, c'est quand on echo un attribut (genre <img src="pouet.jpeg /> ), là faut escaper les quotes, donc faut mettre ENT_QUOTES
Marsh Posté le 13-07-2005 à 18:40:47
Reply
Marsh Posté le 13-07-2005 à 14:48:47
Bonjour,
voilà mon problème :
je fais une insertion dans la base de donnée MySQL avec une donnée d'un formulaire de cette façon :
Seulement, lorsque la chaine $_POST['nom'] contient un ' ou un \, la requête plante
Pour contrer le ', j'ai fait ceci :
et
=> ça fonctionne en local chez moi, mais pas sur le site
Que puis-je faire ?
Pour \, je n'ai aucune idée ...
Merci d'avance