Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1561 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  String qui contient un ' ou un \

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

String qui contient un ' ou un \

n°1149103
nero27
Posté le 13-07-2005 à 14:48:47  profilanswer
 

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 :

Code :
  1. $query="update table set nom='$_POST[nom]' where id_user=$_SESSION[id_user]";


 
Seulement, lorsque la chaine $_POST['nom'] contient un ' ou un \, la requête plante :/
 
Pour contrer le ', j'ai fait ceci :

Code :
  1. $query="update table set nom='".str_replace("'","''",$_POST[nom])."' where id_user=$_SESSION[id_user]";


et

Code :
  1. $query="update table set nom='".str_replace("'","\'",$_POST[nom])."' where id_user=$_SESSION[id_user]";


=> ç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 :jap:

mood
Publicité
Posté le 13-07-2005 à 14:48:47  profilanswer
 

n°1149106
FlorentG
Unité de Masse
Posté le 13-07-2005 à 14:50:48  profilanswer
 

Ben ouais [:dawa] Non seulement ça plante, mais en plus ça fait une belle faille [:dawa]
 
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 :(

n°1149109
nero27
Posté le 13-07-2005 à 14:52:01  profilanswer
 

désolé, je suis un autodidacte :/
Est-ce que tu peux m'expliquer comment contrer ça ?


Message édité par nero27 le 13-07-2005 à 14:52:10
n°1149113
FlorentG
Unité de Masse
Posté le 13-07-2005 à 14:53:21  profilanswer
 

A toi de chercher [:spamafote] Je suis aussi autodidacte, et c'est la première chose que j'ai pu lire [:spamafote]

n°1149114
FlorentG
Unité de Masse
Posté le 13-07-2005 à 14:53:54  profilanswer
 

Apprend à chercher, sinon on te verra beaucoup trop souvent ici ;)

n°1149116
nero27
Posté le 13-07-2005 à 14:55:04  profilanswer
 

Et les méthodes que j'ai énoncées, elles sont pas bonnes ? :??:
EDIT: j'ai cherché, mais je ne trouve rien [:sinclaire]
J'ai cherché sur le forum, mais c'est 3 caractères minimumu : je ne vois pas quoi mettre comme termes pour être pertinent :/


Message édité par nero27 le 13-07-2005 à 14:57:48
n°1149120
FlorentG
Unité de Masse
Posté le 13-07-2005 à 14:56:51  profilanswer
 

Non ;)
 
Regarde la doc sur http://fr.php.net/manual/en/function.mysql-query.php, et particulièrement certains exemples

n°1149126
skeye
Posté le 13-07-2005 à 15:00:15  profilanswer
 

voire un mysql_real_escape_string, vu que c'est pour mysql...:o


Message édité par skeye le 13-07-2005 à 15:00:22

---------------
Can't buy what I want because it's free -
n°1149128
FlorentG
Unité de Masse
Posté le 13-07-2005 à 15:04:27  profilanswer
 

Chuuuuut, laissez-le chercher [:dawa]

n°1149129
nero27
Posté le 13-07-2005 à 15:04:40  profilanswer
 

ah l'addslashes : je l'avais complètement oublié lui [:neowen]

mood
Publicité
Posté le 13-07-2005 à 15:04:40  profilanswer
 

n°1149132
nero27
Posté le 13-07-2005 à 15:05:37  profilanswer
 

FlorentG a écrit :

Chuuuuut, laissez-le chercher [:dawa]


 :sarcastic:  :pfff:  

n°1149139
nero27
Posté le 13-07-2005 à 15:14:00  profilanswer
 

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 ?

n°1149140
skeye
Posté le 13-07-2005 à 15:14:58  profilanswer
 

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! ;)


---------------
Can't buy what I want because it's free -
n°1149143
FlorentG
Unité de Masse
Posté le 13-07-2005 à 15:16:02  profilanswer
 

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

n°1149148
nero27
Posté le 13-07-2005 à 15:17:55  profilanswer
 

Ah oui, en effet.
Par contre, ça va me donner un boulot monstre : ajouter sur tout le site stripslashes pour l'affichage :pt1cable:

n°1149156
FlorentG
Unité de Masse
Posté le 13-07-2005 à 15:20:25  profilanswer
 

pour l'affichage, c'est :

echo htmlspecialchars(stripslashes($pouet), ENT_NOQUOTES);

n°1149161
nero27
Posté le 13-07-2005 à 15:23:43  profilanswer
 

blablagerezkljrez a écrit :

Pauvre petit
Vaut mieux cela que se faire plomber une BDD par un pyjama


Niveau sécurité, ça ne craint rien car ça ne concerne pas les login de connexion ;)

n°1149316
sielfried
Posté le 13-07-2005 à 17:12:58  profilanswer
 

FlorentG a écrit :

pour l'affichage, c'est :

echo htmlspecialchars(stripslashes($pouet), ENT_NOQUOTES);



 
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. :)


Message édité par sielfried le 13-07-2005 à 17:14:41

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1149402
FlorentG
Unité de Masse
Posté le 13-07-2005 à 18:25:01  profilanswer
 

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 :D 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 &eacute;). Moi ça m'intéresse pas, je fous tout en unicode [:joce] 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 :)

n°1149420
sielfried
Posté le 13-07-2005 à 18:40:47  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  String qui contient un ' ou un \

 

Sujets relatifs
[XML]Parser un String contenant du XMLRecherche d'une phrase dans un string
Remplacer une string dans un fichierSupprimer des lignes dans une String
[Java] Probleme avec "\n" lors d'un String.split(";")Query string qui ne va plus
tronquer une string avec sed ou gawk[Visual C++]CString qui contient un #define
Conversion System::String* en std::stringsavoir si une string ne contient que des chiffres
Plus de sujets relatifs à : String qui contient un ' ou un \


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR