Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1832 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PHP et sql injection

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP et sql injection

n°2287111
zezette
"Allez hop, au revoir"
Posté le 30-08-2016 à 22:31:59  profilanswer
 

Bonsoir à tous,
 
J'ai une page PHP à la quelle je passe un paramètre à l'url. Je récupère ce paramètre pour une requête sql
 
http://www.monsite.com/page.php?parametre=5
 
<?php
//J'ai pensé à protéger mon paramètre en faisant
$parametre=mysql_real_escape_string($_GET['parametre']);
//Puis je fais ma requete
$sql="SELECT * FROM table where id=$parametre;";
//(...)
 
?>
 
Mais il semble que mysql_real_escape_string ne soit pas suffisant pour protéger des "sql injection" (on m'a fait la démo avec sqlmap ; le mec arrivait à lister (parce qu'il est sympa) tout le contenu de mes bases de données :|).
 
Que pourrais-je faire de plus pour éviter ça ?
 
Merci :)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
mood
Publicité
Posté le 30-08-2016 à 22:31:59  profilanswer
 

n°2287113
antac
..
Posté le 30-08-2016 à 22:57:15  profilanswer
 

Idéalement, passer par PDO pour passer tes requêtes.

n°2287126
mechkurt
Posté le 31-08-2016 à 09:33:26  profilanswer
 

Quand tu attend un id numérique le plus simple c'est de faire un intval()


---------------
D3
n°2287179
tofinard
Posté le 31-08-2016 à 14:57:47  profilanswer
 

Oui ce n'est pas suffisant, j'opterais aussi pour un intval dans ce cas précis. sinon les bibliothèque de nettoyage c'est aussi très bien. Mais de manière générale en sécurité il n'y a pas mieux que de savoir exactement ce que tu attends en entrée et les renseignements que tu donne en sortie

n°2287200
antac
..
Posté le 31-08-2016 à 20:24:17  profilanswer
 

quand il s'agit d'un entier, c'est effectivement facile... c'est surtout pour les chaîne de caractère qu'il faut être vigilant et à ma connaissance, le mieux c'est le PDO...

n°2287429
sebdej
Posté le 06-09-2016 à 17:25:47  profilanswer
 

zezette a écrit :

Bonsoir à tous,
 
J'ai une page PHP à la quelle je passe un paramètre à l'url. Je récupère ce paramètre pour une requête sql
 
http://www.monsite.com/page.php?parametre=5
 
<?php
//J'ai pensé à protéger mon paramètre en faisant
$parametre=mysql_real_escape_string($_GET['parametre']);
//Puis je fais ma requete
$sql="SELECT * FROM table where id=$parametre;";
//(...)
 
?>
 
Mais il semble que mysql_real_escape_string ne soit pas suffisant pour protéger des "sql injection" (on m'a fait la démo avec sqlmap ; le mec arrivait à lister (parce qu'il est sympa) tout le contenu de mes bases de données :|).
 
Que pourrais-je faire de plus pour éviter ça ?
 
Merci :)


 
Avertissement : j'y connais rien au PHP.
 
Il ne manquerait pas les "quotes" autour de $parametre ?
 

Code :
  1. $sql="SELECT * FROM table where id='$parametre';";


 
Sinon je fais http://www.monsite.com/page.php?pa [...] ABLE+table et ça injecte.

n°2287430
antac
..
Posté le 06-09-2016 à 17:55:44  profilanswer
 

Pas obligatoire quand la variable est entre double quotes

n°2287432
MaybeEijOr​Not
but someone at least
Posté le 06-09-2016 à 19:04:33  profilanswer
 

antac a écrit :

quand il s'agit d'un entier, c'est effectivement facile... c'est surtout pour les chaîne de caractère qu'il faut être vigilant et à ma connaissance, le mieux c'est le PDO...


 
En même temps, mise à part pour des messages, tu t'attends en général à du ^[a-Z0-9]{1,12}$, ce n'est probablement pas conseillé niveau perf mais un regex peut faire l'affaire. Et dans des cas plus spéciaux (coordonnées, adresse mail, numéro de tel, etc.) il est tout aussi facile de trouver un regex qui fera le taf.
 
Mais bon, comme dit, pourquoi s'emmerder quand on peut utiliser PDO.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP et sql injection

 

Sujets relatifs
[PHP] [débutant] strlen() et chaîne de caractères particulièreDecryptage code PHP
[PHP] Planning pour insérer des cours[RESOLU] Cherche dépanneur en PHP pour mediawiki
Générer un JSON avec un script PHP et l'exploiter dans de l'AngularJS[PHP/Bootstrap] Problème de pièce jointe et d'envoi de données
Automatisation d'un script PHP avec CRON[Symfony/Php] vers Application mobile
[PHP] Sécurité - Injection de javascripts[PHP] injection sql (MS SQL)
Plus de sujets relatifs à : PHP et sql injection


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR