Injection sql
Résolu/Fermé
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
-
12 nov. 2010 à 20:54
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 - 16 nov. 2010 à 21:38
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 - 16 nov. 2010 à 21:38
A voir également:
- Injection sql
- Récupération serveur sql - Télécharger - Gestion de données
- Sql query - Télécharger - Gestion de données
- Sql replace plusieurs valeurs - Forum Programmation
- Sql pix - Forum Python
- Delete cascade sql - Forum Programmation
12 réponses
avion-f16
Messages postés
19244
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 avril 2024
4 496
13 nov. 2010 à 17:56
13 nov. 2010 à 17:56
Salut.
Utilise mysql_real_escape_string pour sécuriser tes variables provenant de l'utilisateur (GET, POST et COOKIE principalement) avant d'effectuer les requêtes SQL.
Utilise mysql_real_escape_string pour sécuriser tes variables provenant de l'utilisateur (GET, POST et COOKIE principalement) avant d'effectuer les requêtes SQL.
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
13 nov. 2010 à 22:47
13 nov. 2010 à 22:47
merci de ta reponse
Mais je dois l utiliser ou et comment
Merci de ton aide
Mais je dois l utiliser ou et comment
Merci de ton aide
avion-f16
Messages postés
19244
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 avril 2024
4 496
13 nov. 2010 à 23:14
13 nov. 2010 à 23:14
Par exemple :
Ou :
$sql = 'SELECT COUNT(*) AS nb FROM table WHERE column="'.mysql_real_escape_string($_GET['where'].'"';
Ou :
$where = mysql_real_escape_string($_GET['where']); $sql = 'SELECT COUNT(*) AS nb FROM table WHERE column="'.$where.'";
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
13 nov. 2010 à 23:23
13 nov. 2010 à 23:23
Merci de ta reponse
mais je ne vois pas trop comment tu utilise ton where
sur mon exemple tu me conseil comment?
$sql = 'INSERT INTO vision (id, nom, serie, batie, adresse, cp, ville, département, tel, portable, demande, m2, caveradier, decoré, couvert, terrain, quand, serie, connu) VALUES("", "'.mysql_escape_string($_POST['f_1']).'", "'.mysql_escape_string($_POST['f_2']).'", "'.mysql_escape_string($_POST['f_3']).'", "'.mysql_escape_string($_POST['f_15']).'", "'.mysql_escape_string($_POST['f_16']).'", "'.mysql_escape_string($_POST['f_17']).'", "'.mysql_escape_string($_POST['f_4']).'", "'.mysql_escape_string($_POST['f_5']).'", "'.mysql_escape_string($_POST['f_18']).'", "'.mysql_escape_string($_POST['f_6']).'", "'.mysql_escape_string($_POST['f_7']).'", "'.mysql_escape_string($_POST['f_8']).'", "'.mysql_escape_string($_POST['f_9']).'", "'.mysql_escape_string($_POST['f_10']).'", "'.mysql_escape_string($_POST['f_11']).'", "'.mysql_escape_string($_POST['f_12']).'", "'.mysql_escape_string($_POST['f_13']).'", "'.
mysql_escape_string($_POST['f_14']).'" )';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
exit();
Merci
mais je ne vois pas trop comment tu utilise ton where
sur mon exemple tu me conseil comment?
$sql = 'INSERT INTO vision (id, nom, serie, batie, adresse, cp, ville, département, tel, portable, demande, m2, caveradier, decoré, couvert, terrain, quand, serie, connu) VALUES("", "'.mysql_escape_string($_POST['f_1']).'", "'.mysql_escape_string($_POST['f_2']).'", "'.mysql_escape_string($_POST['f_3']).'", "'.mysql_escape_string($_POST['f_15']).'", "'.mysql_escape_string($_POST['f_16']).'", "'.mysql_escape_string($_POST['f_17']).'", "'.mysql_escape_string($_POST['f_4']).'", "'.mysql_escape_string($_POST['f_5']).'", "'.mysql_escape_string($_POST['f_18']).'", "'.mysql_escape_string($_POST['f_6']).'", "'.mysql_escape_string($_POST['f_7']).'", "'.mysql_escape_string($_POST['f_8']).'", "'.mysql_escape_string($_POST['f_9']).'", "'.mysql_escape_string($_POST['f_10']).'", "'.mysql_escape_string($_POST['f_11']).'", "'.mysql_escape_string($_POST['f_12']).'", "'.mysql_escape_string($_POST['f_13']).'", "'.
mysql_escape_string($_POST['f_14']).'" )';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
exit();
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
avion-f16
Messages postés
19244
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 avril 2024
4 496
14 nov. 2010 à 13:10
14 nov. 2010 à 13:10
Comme tu l'as fait, c'est correct.
Si tu veux alléger un peu tes requête, il faudra stocker le résultat de mysql_real_escape_string() dans des variables. Dans mon exemple, j'en avais qu'une seule : $where. Mais sur le tiens, tu auras besoin d'autant de variables que de mysql_real_escape_string().
Pour rendre ton code plus clair, je te propose de faire comme ceci. C'est plus long mais ça facilite la lecture :
Si tu veux alléger un peu tes requête, il faudra stocker le résultat de mysql_real_escape_string() dans des variables. Dans mon exemple, j'en avais qu'une seule : $where. Mais sur le tiens, tu auras besoin d'autant de variables que de mysql_real_escape_string().
Pour rendre ton code plus clair, je te propose de faire comme ceci. C'est plus long mais ça facilite la lecture :
$sql = 'INSERT INTO vision ( id, nom, serie, batie, adresse, cp, ville, département, tel, portable, demande, m2, caveradier, decoré, couvert, terrain, quand, serie, connu ) VALUES( "", "'.mysql_escape_string($_POST['f_1']).'", "'.mysql_escape_string($_POST['f_2']).'", "'.mysql_escape_string($_POST['f_3']).'", "'.mysql_escape_string($_POST['f_15']).'", "'.mysql_escape_string($_POST['f_16']).'", "'.mysql_escape_string($_POST['f_17']).'", "'.mysql_escape_string($_POST['f_4']).'", "'.mysql_escape_string($_POST['f_5']).'", "'.mysql_escape_string($_POST['f_18']).'", "'.mysql_escape_string($_POST['f_6']).'", "'.mysql_escape_string($_POST['f_7']).'", "'.mysql_escape_string($_POST['f_8']).'", "'.mysql_escape_string($_POST['f_9']).'", "'.mysql_escape_string($_POST['f_10']).'", "'.mysql_escape_string($_POST['f_11']).'", "'.mysql_escape_string($_POST['f_12']).'", "'.mysql_escape_string($_POST['f_13']).'", "'. mysql_escape_string($_POST['f_14']).'" )'; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
14 nov. 2010 à 16:15
14 nov. 2010 à 16:15
OK merci effectivement c est plus clair comme ca
On va faire plus simple je prends seulement sur 2 requete mais je ne vois pas ou utiliser ta variable "'.mysql_real_escape_string($_GET['where'].'"
$sql = 'INSERT INTO vision (
id,
nom,
) VALUES(
"",
"'.mysql_escape_string($_POST['f_1']).'",
"'.mysql_escape_string($_POST['f_2']).'",
)';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
Encore une question pour fermer ma requete je dois utiliser
exit();
ou
mysql_close();
Merci beaucoup de ton aide
On va faire plus simple je prends seulement sur 2 requete mais je ne vois pas ou utiliser ta variable "'.mysql_real_escape_string($_GET['where'].'"
$sql = 'INSERT INTO vision (
id,
nom,
) VALUES(
"",
"'.mysql_escape_string($_POST['f_1']).'",
"'.mysql_escape_string($_POST['f_2']).'",
)';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
Encore une question pour fermer ma requete je dois utiliser
exit();
ou
mysql_close();
Merci beaucoup de ton aide
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
14 nov. 2010 à 16:36
14 nov. 2010 à 16:36
Remplace tes mysql_escape_string() par mysql_real_escape_string()
Fecal-Matter
Messages postés
1
Date d'inscription
dimanche 14 novembre 2010
Statut
Membre
Dernière intervention
14 novembre 2010
14 nov. 2010 à 16:54
14 nov. 2010 à 16:54
Pour se protéger, toute les données envoyés par l'utilisateur doivent être passées par mysql_escape_string(), et intval() si c'est des données numériques.
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
14 nov. 2010 à 17:38
14 nov. 2010 à 17:38
mysql_escape_string(): Cette fonction est OBSOLETE depuis PHP 5.3.0. Nous vous encourageons vivement à ne plus l'utiliser.
A remplacer donc par mysql_real_escape_string()
A remplacer donc par mysql_real_escape_string()
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
14 nov. 2010 à 18:58
14 nov. 2010 à 18:58
Merci de votre reponse je viens de la changer et ca fonctionne
Par contre je suis entrain de modifier mes autres formules et la ca coince
actuel
$requete1 = mysql_query("SELECT * FROM $table_name WHERE serie='$serie' ORDER BY $table_col ASC LIMIT ".$limite1.", ".$limite2."") or die(mysql_error());
modification
$requete1 = mysql_query("SELECT * FROM $table_name WHERE serie="'.mysql_real_escape_string('serie').'" ORDER BY $table_col ASC LIMIT ".$limite1.", ".$limite2."") or die(mysql_error());
Par contre pour cette question vous ne m avez pas donne de reponse
ncore une question pour fermer ma requete je dois utiliser
exit();
ou
mysql_close();
Merci de votre aide
Par contre je suis entrain de modifier mes autres formules et la ca coince
actuel
$requete1 = mysql_query("SELECT * FROM $table_name WHERE serie='$serie' ORDER BY $table_col ASC LIMIT ".$limite1.", ".$limite2."") or die(mysql_error());
modification
$requete1 = mysql_query("SELECT * FROM $table_name WHERE serie="'.mysql_real_escape_string('serie').'" ORDER BY $table_col ASC LIMIT ".$limite1.", ".$limite2."") or die(mysql_error());
Par contre pour cette question vous ne m avez pas donne de reponse
ncore une question pour fermer ma requete je dois utiliser
exit();
ou
mysql_close();
Merci de votre aide
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
14 nov. 2010 à 19:21
14 nov. 2010 à 19:21
actuel
modification
Dans le premier cas tu utilises une variable ($serie) et pas dans le deuxième...
Je dirai que c'est donc à modifier en:
$requete1 = mysql_query("SELECT * FROM $table_name WHERE serie='$serie' ORDER BY $table_col ASC LIMIT ".$limite1.", ".$limite2."") or die(mysql_error());
modification
$requete1 = mysql_query("SELECT * FROM $table_name WHERE serie="'.mysql_real_escape_string('serie').'" ORDER BY $table_col ASC LIMIT ".$limite1.", ".$limite2."") or die(mysql_error());
Dans le premier cas tu utilises une variable ($serie) et pas dans le deuxième...
Je dirai que c'est donc à modifier en:
$requete1 = mysql_query("SELECT * FROM $table_name WHERE serie="'.mysql_real_escape_string($serie).'" ORDER BY $table_col ASC LIMIT ".$limite1.", ".$limite2."") or die(mysql_error());
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
14 nov. 2010 à 21:55
14 nov. 2010 à 21:55
merci de ta reponse mais j avais aussi essaier
voici l erreur
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in
Merci
voici l erreur
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in
Merci
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
14 nov. 2010 à 22:24
14 nov. 2010 à 22:24
Après le in tu as le numéro de ligne.
Quelle est la ligne correspondante?
Si c'est celle avec la requête, je t'invite à la réécrire de la manière suivante:
Quelle est la ligne correspondante?
Si c'est celle avec la requête, je t'invite à la réécrire de la manière suivante:
$requete1 = mysql_query('SELECT * FROM '.$table_name.' WHERE serie="'.mysql_real_escape_string($serie).'" ORDER BY '.$table_col.' ASC LIMIT '.$limite1.', '.$limite2.'') or die(mysql_error());
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
14 nov. 2010 à 22:47
14 nov. 2010 à 22:47
merci de ta reponse effectivement maintenant ca fonctionne
La nouvel ecriture que tu m as donner correspond a quoi php5?
Pour la fermeture de la base de donne le mieu est exit() ou mysql_close();
Merci pour ton aide
La nouvel ecriture que tu m as donner correspond a quoi php5?
Pour la fermeture de la base de donne le mieu est exit() ou mysql_close();
Merci pour ton aide
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
14 nov. 2010 à 23:04
14 nov. 2010 à 23:04
Mon ecriture est simplement une autre manière d'écrire.
On peu écrire par exemple:
ou
Pour fermer la connexion il faut utiliser mysql_close();
exit(); va simplement arrêter un script.
Exemple:
"end" ne sera pas écrit.
On peu écrire par exemple:
echo 'ok';
ou
echo "ok";
Pour fermer la connexion il faut utiliser mysql_close();
exit(); va simplement arrêter un script.
Exemple:
echo 'start'; exit(); echo 'end';
"end" ne sera pas écrit.
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
15 nov. 2010 à 22:07
15 nov. 2010 à 22:07
Merci de ton aide
JE vais modifier toutes mes pages et je te tiens au courant
Merci pour tous
JE vais modifier toutes mes pages et je te tiens au courant
Merci pour tous
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
16 nov. 2010 à 05:36
16 nov. 2010 à 05:36
Pas de souci, c'est toujours un plaisir d'aider.
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
16 nov. 2010 à 21:38
16 nov. 2010 à 21:38
Voila je veins de modifier tous mes fichier j ai refait le test avec havij et je n est plus acces a ma base de donné niquel merci
Maintenant j aimerais savoir si mon site est sur et si tu connais d autre logiciel d injection sql pour tester tous cela
Merci de ton aide
Maintenant j aimerais savoir si mon site est sur et si tu connais d autre logiciel d injection sql pour tester tous cela
Merci de ton aide