Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/10/2011, 12h24   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 12
Points : 12
Par défaut Sécurité - Injection Sql

Bonjour,
étudiant en ecole d'informatique je dois réaliser un exposé sur les injections Sql.
Pour cela je réalise un petit site avec des exemples et un code volontairement bourrés de failles.

Je bloque sur la modification d'un champs passé dans l'url

Url : http://localhost/failles/mapage?login=membre

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', ''); 
// on seléctionne la base
mysql_select_db('failles',$db); 
 
$login= $_GET['login'];
$count = 0;
$q = mysql_query("SELECT PrenomMembre,NomMembre FROM membre WHERE LoginMembre ='$login'");
 
        $result = mysql_fetch_assoc($q); //Ligne 69
        $PrenomMembre = $result["PrenomMembre"];
	$NomMembre = $result["NomMembre"];
 
	echo '<strong><span style="color: #FF0000">Prénom :  ' . $PrenomMembre .'</span></strong><br/>';
	echo '<strong><span style="color: #FF0000">Nom :  ' . $NomMembre .'</span></strong><br/>';					
?>
Si je souhaite mettre par exemple :
http://localhost/mapage?login=membre

il me retourne Prénom et Nom

Si je tente la faille
http://localhost/mapage?login=' UNION SELECT PasswordMembre FROM membre WHERE id=1

Je récupère l'erreur :
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given Ligne 69


Qu'est ce que je fais de mal ? ou il y a t-il quelques chose qui protège mon code contre mon grès ?

Merci
bouuuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 12h28   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
http://php.net/manual/fr/security.da...-injection.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 13h28   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 12
Points : 12
Merci je viens de lire cette page mais je n'arrive pas à comprendre pourquoi ma tentative ne passe pas dans mon cas :s

j'ai bien piger le système mais je n'arrive pas à le mettre en place
bouuuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 13h31   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par bouuuh Voir le message
Merci je viens de lire cette page mais je n'arrive pas à comprendre pourquoi ma tentative ne passe pas dans mon cas :s
faut faire :

Code :
$login= mysql-real_escape_string($_GET['login']);
Citation:
j'ai bien piger le système mais je n'arrive pas à le mettre en place
magic quote ?
http://php.net/manual/fr/security.magicquotes.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 14h22   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 12
Points : 12
Désactivé dans mon php.ini
bouuuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 14h44   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
fait plutot

Code :
1
2
$sql = "SELECT PrenomMembre,NomMembre FROM membre WHERE LoginMembre ='$login'"
$q = mysql_query($sql);
un var_dump sur $sql et tu verra ta requete, mais si tu fais

http://localhost/mapage?login=' UNION SELECT PasswordMembre FROM membre WHERE id=1

ta requete est fausse puisqu'en UNION il faut avoir le même nombre de champs, ta première requête en a 2 et la deuxième 1
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h48.


 
 
 
 
Partenaires

Hébergement Web