Injection sql
Résolu
audi68
Messages postés
571
Date d'inscription
Statut
Membre
Dernière intervention
-
audi68 Messages postés 571 Date d'inscription Statut Membre Dernière intervention -
audi68 Messages postés 571 Date d'inscription Statut Membre Dernière intervention -
Bonjour a tous,
Je ens d installer le logiciel havij surmon ordi car on me la conseiller pour tester mon site
Par contre je viens de me rendre compte que l on peut acceder a la base de donné de mon site
Que dois je faire pour bloquer l acces
J ai fait un autre site sur le meme principe que le 1er mais celui ci n a aucune faille
Meri de votre aide
Je ens d installer le logiciel havij surmon ordi car on me la conseiller pour tester mon site
Par contre je viens de me rendre compte que l on peut acceder a la base de donné de mon site
Que dois je faire pour bloquer l acces
J ai fait un autre site sur le meme principe que le 1er mais celui ci n a aucune faille
Meri de votre aide
A voir également:
- Injection sql
- Logiciel sql - Télécharger - Bases de données
- Requête sql pix - Forum Python
- Tectro sre 703 injection notice - Forum PDF
- Jointure sql ✓ - Forum MySQL
- Depart du camion du point d'injection shein - Forum Consommation & Internet
12 réponses
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.
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.'";
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
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());
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
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.
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()
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
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());
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
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());
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