-
SQL Injection et slash
Bonjour,
Suite à de nombreuses lectures sur les attaques SQL par injection, j'ai decidé de rajouter autour de mes variables la fonction mysql_real_escape_string sur mes $_POST.
Le problème maintenant c'est que lorsque je poste via un form le mot suivant:
L'école
ca affiche L\'école
Que dois je faire pour ne plus faire apparaitre ces slashs ? Y'a t-il une fonction (stripslashes ? adsslahes ?) sans que cela annule ma protection mysql_real_escape_string.
Merci pour vos réponses.
-
Il faut utiliser mysql_real_escape_string() uniquement sur la création de ta requete, pas lorsque tu affiches les données.
Si tu travailles sur un serveur qui utilise les magic quotes, les anti-slashes sont déjà ajoutés sur les POST, donc mysql_real_escape_string() les double. Tu te retrouve donc avec un \ de trop.
-
ok
Mes magic quotes sont pourtant en off sur mon serveur...
-
On est donc dans le premier cas.
-
Ma fonction mysql_real_escape_string est uniquement appliqué lors de la création de la requete.
Si je rajoute stripslashes à l'affichage de la variable, ça supprime bien le \ en trop. Dans la bdd c'est bien enregistré avec les slash.
Est ce que cela vous semble ok ?
Par contre pour les textarea, lorsque je fais un saut de ligne et que j'envoi mes données, ca me rajoute \r \n. Tout ça est bien compliqué.. J'avoue que là j'ai du mal à trouver réponse à mes questions.
Merci pour votre aide.
-
Ce n'est pas compliqué et tu as toi même la réponse a tes questions a portée de echo.
Code:
echo $_POST['variable'];
En le placant aux differents points de ton script, tu verras bien a quel moment tu passes de L'école à L\'école puis à L\\'école