Apostrophe et antislash

davidtennis
WRInaute discret
WRInaute discret
 
Messages: 55
Inscription: 5 Avr 2007

Apostrophe et antislash

Message le Jeu Avr 05, 2007 22:33

Bonjour,

J'ai des formulaires avec des champs text remplis par les utilisateurs du site.
Lorsque l'utilisateur entre un apostrophe, il arrive que celui si soit stocké avec un anti-slash dans la base de donnée, voire même avec plusieurs antislash.
J'ai donc dans certaines entrées de la BDD des :
"J\\\\\\\\\\\\'aime m\\\\\\\\\\\'amuser"...

Savez vous comment faire pour éviter que ces antislashs apparaissent ?

Merci !


latitude1661
WRInaute discret
WRInaute discret
 
Messages: 104
Inscription: 25 Mai 2006

Message le Jeu Avr 05, 2007 22:51

Verifie que tu n'aie pas des boucles dans ton code php qui applique un addslashes plusieures fois sur le meme string.

davidtennis
WRInaute discret
WRInaute discret
 
Messages: 55
Inscription: 5 Avr 2007

Message le Ven Avr 06, 2007 0:52

Je fais simplement un:
$message = $HTTP_POST_VARS["message"];

suivi d'une query:
$query = "INSERT INTO $table2 VALUES (...,'$message',...)";

et pourtant c'est parfois sauvegardé avec plein d'antislashs dans la BDD....

Popop56
WRInaute discret
WRInaute discret
 
Messages: 186
Inscription: 5 Jan 2007

Message le Ven Avr 06, 2007 1:30

:!: c'est pas bien ce que tu fais la ! Il faut que tu protège un minimum ta chaine avec mysql_real_escape_string si tu veux pas avoir des problèmes

Pour ton problème regardes peut etre au niveau des magic quotes


lupuz
WRInaute discret
WRInaute discret
 
Messages: 212
Inscription: 15 Mar 2006

Message le Ven Avr 06, 2007 8:20

Ce sont les POST qui ajoute des \



$string = eregi_replace("\'","'", $string).

Inazo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 13
Inscription: 6 Avr 2007

Message le Ven Avr 06, 2007 15:28

Salut à tous,

Déjà ceci est très mauvais pour la sécurité :

Code: Tout sélectionner
$message = $HTTP_POST_VARS["message"];

suivi d'une query:
$query = "INSERT INTO $table2 VALUES (...,'$message',...)";


Donc ceci est mieux :

Code: Tout sélectionner

if(get_magic_quotes_gpc())
     stripslashes($_POST["message"]);

$message = mysql_escape_string($_POST["message"]);
$query = "INSERT INTO $table2 VALUES (...,'$message',...)";



Pourquoi faire un stripslashes si tu as les magic_quotes_gpc d'activer ? Tout simplement car se sont les magic_quotes_gpc qui te rajoute les \ et si tu en as plusieurs c'est que l'utilisateurs à fait une modification de sont nom par exemple mais que tu n'as pas enlever les \.

Donc pour commencer désactive les magic_quotes_gpc utilise la fonction de mysql pour te protéger et utilise les fonctions htmlentities ou htmlspecialchars avec l'option ENT_QUOTES.

De plus si tu as ce soucis c'est que tu ne fais pas attention le moins du monde à ce que tes utilisateurs t'envoies via les formulaires et tu es donc potentiellement attaquable pour le XSS et injection SQL.

Cordialement Inazo.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités