dgdf
Messages postés8Date d'inscriptionsamedi 3 novembre 2007StatutMembreDernière intervention13 mai 2012
-
17 juil. 2011 à 11:06
dgdf
Messages postés8Date d'inscriptionsamedi 3 novembre 2007StatutMembreDernière intervention13 mai 2012
-
17 juil. 2011 à 21:35
Bonjour à tous,
Je viens vers vous pour un pb de "magic quotes" ... Développeur PHP depuis un petit moment, je pensais avoir tout compris sur les magic quotes, mais là je ne suis plus sûr de moi.
Je travaille sur la migration d'une base de données vers mysql. D'après tout les sujets que j'ai pu lire sur les magic quotes, il est fortement conseillé de mettre magic_quotes_gpc à off, ainsi que magic_quotes_runtime. Ce que j'ai fait. Ensuite j'utilise une fonction appellée secure_var_insert() :
function secure_var_insert($varInsert) {
if (get_magic_quotes_gpc()==1) {
return ($varInsert);
} else {
return (addslashes($varInsert));
}
Tout ce code fonctionne bien. Par contre, ce que je n'arrive pas à comprendre, c'est que dans la base, aucun des caractères n'est échappé. Quand j'affiche à l'écran le contenu des variables après qu'elles soient passées dans la fonction secure_var_insert, pas de pb, les caractères sont bien échappés, tout se passe bien. Par contre ce qui est inséré dans la base, aucun caractère n'est échappé ... Ce n'est pas normal, tout devrait l'être normalement, non ?
NHenry
Messages postés15117Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention10 mai 2024159 17 juil. 2011 à 19:42
Bonjour,
Oui, dgdf, tu as bien compris mon message, tu visualises les chaines sans les échappements dans ta bdd..
Tu le faisais en double, d'où l'affichage, mais au moins, c'est mieux 2 que pas du tout :)
Il faut juste ensuite, penser à utiliser la réciproque pour récupérer la chaine originale.
NHenry
Messages postés15117Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention10 mai 2024159 17 juil. 2011 à 13:34
Bonjour,
Tout simplement, quand tu ajoutes par exemple :
"Mon Texte avec des ca'acte'es etranges"
Sera transformé en :
""Mon Texte avec des ca\'acte\'es etranges""
Quand tu ajoutes cela à ta requête, ça devient :
"INSERT INTO ... VALUES(..., '"Mon Texte avec des ca\'acte\'es etranges"', ...")
Donc tu insères les texte sans le formatage, le formatage sert juste à éviter une injection SQL.
cod57
Messages postés1653Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention11 septembre 201319 17 juil. 2011 à 16:25
bonjour
normalement en php5 c'est à off chez les hébergeurs actuels
mysql_real_escape_string protège des injections dans tout les cas
donc on evite ta méthode addslashes
/*on doit être connecte a mysql pour cette fonction*/
foreach($liste as $k => $v){
$v=mysql_real_escape_string($v);
liste[$k]=$v;
}
$variable0 = $liste[0];
...
$sql = "INSERT INTO artiste (
nom_artiste,
bio_artiste,
id_contact,
type_contact,
date_creation,
date_fin,
id_photo,
ville,
url_site_web,
gestion_droit,
nom_stockage,
old_id_artiste,
old_contact,
old_style,
old_manque)
VALUES(
'$variable0',
'$variable1',
'',
'',
'$variable3',
'$variable5',
'1',
'$variable10',
'$variable11',
'$variable6',
'$variable0',
'$variable7',
'$variable2',
'$variable9',
'$variable8'
)";
dgdf
Messages postés8Date d'inscriptionsamedi 3 novembre 2007StatutMembreDernière intervention13 mai 2012 17 juil. 2011 à 18:29
Tout d'abord, grand merci à tous les deux pour avoir pris du temps pour me répondre.
Donc si j'ai bien compris, NHenry, quand je regarde directement dans ma base via phpMyAdmin, je dois voir le texte sans les échappements comme ceci : "Mon Texte avec des ca'acte'es etranges"
Si c'est bien ça, mon script fonctionne bien et j'évite les injections SQL. Par contre j'ai du me tromper précédemment sur d'autres applis, car je voyais en base les échappements. Cela veut dire que j'avais du laisser magic_quotes_gpc à on. Ceci dit pas de pb de sécurité, la sécurisation était plutôt faite en double alors.
cod57, l'hébergement est chez OVH, et en faisant un phpinfo(), les magic_quotes sont activées, ce qui m'a surpris d'ailleurs, je pensais comme vous qu'elles devaient l'être. Je les désactive donc par .htaccess on utilisant les directives suivantes :
SetEnv MAGIC_QUOTES 0
voilà voilà, encore merci d'avance pour vos réponses qui lèveront mes derniers doutes ...
Bien à vous,
Vous n’avez pas trouvé la réponse que vous recherchez ?