Accueil > Forum > > > > Sécurité : magic_quote_gpc et base de données
Sécurité : magic_quote_gpc et base de données
dimanche 17 juillet 2011 à 11:06:11 |
Sécurité : magic_quote_gpc et base de données

dgdf
|
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() :
Code PHP : function secure_var_insert($varInsert) {
if (get_magic_quotes_gpc()==1) {
return ($varInsert);
} else {
return (addslashes($varInsert));
}
pour chaque insert que je fais dans la base :
Code PHP : $variable0 = secure_var_insert($liste[0]);
$variable1 = secure_var_insert($liste[1]);
$variable2 = secure_var_insert($liste[2]);
$variable3 = date("Y-m-d H:i:s",strtotime($liste[3]));
$variable4 = secure_var_insert($liste[4]);
$variable5 = date("Y-m-d H:i:s",strtotime($liste[5]));
$variable6 = secure_var_insert($liste[6]);
$variable7 = secure_var_insert($liste[7]);
$variable8 = secure_var_insert($liste[8]);
$variable9 = secure_var_insert($liste[9]);
$variable10 = secure_var_insert($liste[10]);
$variable11 = secure_var_insert($liste[11]);
//$variable12 = transformerEnNomDeFichier($variable0);
echo $variable0."/".$variable1."/".$variable2."/".$variable3."/".$variable4."/".$variable5."/".$variable6."/".$variable7."/".$variable8."/".$variable9."/".$variable10."/".$variable11;
/*Ajouter un nouvel enregistrement dans la table*/
$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')";
$res = mysql_query($sql) or die(mysql_error());
if ($res)
{
echo "ligne $j (id=".mysql_insert_id()."): ok";
}
else {
echo "ligne $j : raté (".mysql_error().")";
exit();
}
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 ?
Quelqu'un pourrait-il m'expliquer ?
Je vous remercie par avance pour vos réponses.
|
|
dimanche 17 juillet 2011 à 13:34:53 |
Re : Sécurité : magic_quote_gpc et base de données

NHenry
|
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.
Mon site
|
|
dimanche 17 juillet 2011 à 16:25:56 |
Re : Sécurité : magic_quote_gpc et base de données

cod57
|
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
Code PHP :
/*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'
)";
et strip_slashes() en lecture pour enlever slash
 Bonne programmation !
|
|
dimanche 17 juillet 2011 à 18:29:28 |
Re : Sécurité : magic_quote_gpc et base de données

dgdf
|
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,
|
|
dimanche 17 juillet 2011 à 19:42:34 |
Re : Sécurité : magic_quote_gpc et base de données

NHenry
|
Réponse acceptée !
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.
Mon site
|
|
dimanche 17 juillet 2011 à 21:35:12 |
Re : Sécurité : magic_quote_gpc et base de données

dgdf
|
Merci beaucoup pour ta réponse ! C'est désormais très clair. Enfin ...
Le sujet est résolu.
|
|
Cette discussion est classée dans : insert, liste, var, magic, secure
Répondre à ce message
Sujets en rapport avec ce message
Saisie Automatique Sql [ par xeroxiss ]
Bonjour à tout les petits ternautes rois du php ! Voila j'ai un petit soucis tout simple (je pense)... J'ai un formulaire en php, contenant des liste
Liste Déroulante + Order [ par xeroxiss ]
Bonjour à tous ! J'ai créer 2 petites listes déroulantes remplient d'une longue série de divers marques de pc.Elle sont donc "liées" à une bdd. Ce que
php et sql [ par fatatra ]
bonjour;j'essaie de rentrer des données dans ma bases a partir d'un formulaire.Ce queje fais c'est que je recupére les variable 'post' pour les mettre
Liste déroulante [ par alex2100 ]
Bonjour à tous,Voici mon problème :J'ai 2 liste déroulante dans un formulaire. Le premier est pour choisir un mois. Janvier</o
Formulaire qui calcul [DEPLACE] [ par twinsen60 ]
BonjourJ'aimerai faire une sorte de formulaire, avec des champs a remplir par le biais de "liste déroulante".Suivant mon choix de ma liste, j'ai plusi
Liens et Requêtes ! [ par xeroxiss ]
Bonjour tout le monde ! Voila j'ai une petite question qui peu preter a sourir mais je ne vois pas la solution à mon "probleme". Je voudrai juste savo
probleme avec un code source [ par rixmo ]
slut tout le monde . mon probleme il est tres simple .et suis un debutant avec le php et je cpomprend pas bien. j'ai un code qui me signal une err
explorer un repertoire [ par thejoker31 ]
Bonjour je souhaite afficher un repertoire et ses sous (sous) repertoires à la facon d'un arbre et pouvoir afficher les elements contenus dans les sou
Fatal error: Only variables can be passed by reference [ par attentio ]
bONjour, j'ai une erreur [b]Only variables can be passed by reference [/b] sur mon if, qui semble venir de la fonctionvb()je ne comprends pas pourquoi
exploitation de fichier csv uploadé [ par daris ]
Bonjour à tous! J'ai un souci, aufait je recupere via un formulaire html un fichier csv de 5 colonnes sépareés par des virgule. Le téléchargement du
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|