IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sécurité - Injection Sql


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 97
    Points : 84
    Points
    84
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 97
    Points : 84
    Points
    84
    Par défaut
    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

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $login= mysql-real_escape_string($_GET['login']);
    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

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 97
    Points : 84
    Points
    84
    Par défaut
    Désactivé dans mon php.ini

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    fait plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. [MySQL] Sécurité injection sql
    Par Souri84 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/11/2010, 14h10
  2. [Sécurité] protections php pour XSS, injections SQL, etc
    Par nintendoplayer dans le forum Langage
    Réponses: 1
    Dernier message: 20/03/2008, 08h57
  3. [Sécurité] Injections SQL
    Par sway dans le forum Langage
    Réponses: 5
    Dernier message: 12/05/2007, 11h13
  4. [Sécurité] Injection SQL
    Par Michel_57 dans le forum Langage
    Réponses: 17
    Dernier message: 19/04/2006, 00h25
  5. Sécurité - Inject SQL et %
    Par bigsister dans le forum Requêtes
    Réponses: 14
    Dernier message: 01/04/2006, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo