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

PHP & Base de données Discussion :

Mon site est vulnérable à 27 injections SQL. Comment se proteger ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 218
    Points : 111
    Points
    111
    Par défaut Mon site est vulnérable à 27 injections SQL. Comment se proteger ?
    Bonjour, j'ai fait un petit audit de sécurité et j'ai été impressionné de voir qu'il y avait 27 possibilité d'injection SQL.

    j'ai pourtant protégé mes variables.
    Celles qui sont incriminées sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $user = mysql_real_escape_string(addslashes($_POST['username'])); 
    	$pass = sha1($_POST['password']);
    voila l'exemple des vulnérabilité
    Server Status Code: 302 Found
    Tested value: 1'1
    Server Status Code: 302 Found
    Tested value: '; DESC users; --
    Server Status Code: 302 Found
    Tested value: 1 AND USER_NAME() = 'dbo'
    Server Status Code: 302 Found
    Tested value: 1' AND 1=(SELECT COUNT(*) FROM tablenames); --
    Server Status Code: 302 Found
    Tested value: 1 AND 1=1
    .......
    Qu'est ce que je peux faire pour faire disparaitre toutes ces vilaines possibilités d'injections SQL ?

    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comment est la requête ? Est-ce que c'est bien celle la qui est concernée ?

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 127
    Points : 179
    Points
    179
    Par défaut
    Bonjour,
    Pour ma culture perso c'est quoi le logiciel ou le site qui a fait l'audit ?

    Merci pour l'info

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 218
    Points : 111
    Points
    111
    Par défaut
    l'extension utilisée est SQL inject me.

    la requête en question est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "SELECT * FROM login_users WHERE username='$user' AND password='$pass'"; 
    	$result = mysql_query($sql);

  5. #5
    Membre habitué Avatar de Shinji62
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 135
    Points : 150
    Points
    150
    Par défaut
    Salut,
    "302 found" ne veux pas dire que tu es vulnérable mais jusque tu affiches une page qui n est pas une page d'error 404 ou autres.

    Si tu gères ton serveur Web mod_security est une très bonne solution même si la meilleure reste le code propre.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 248
    Points : 231
    Points
    231
    Par défaut
    Bonjour,

    Une solution est d'utiliser des requêtes préparées avec PDO qui est très pratique.

    http://php.net/pdo.prepared-statements

    vous pouvez être sûr qu'aucune injection SQL n'est possible (Cependant, si vous construisez d'autres parties de la requête en vous basant sur des entrées utilisateurs, vous continuez à prendre un risque).
    Il faut ensuite utiliser un htmlentities lors de l'affichage des informations saisies par les utilisateurs.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 218
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Shinji62 Voir le message
    Salut,
    "302 found" ne veux pas dire que tu es vulnérable mais jusque tu affiches une page qui n est pas une page d'error 404 ou autres.

    Si tu gères ton serveur Web mod_security est une très bonne solution même si la meilleure reste le code propre.
    Effectivement, après vérification il semble que cela soit ca.

    (redirection soit vers le login ou soit vers la page qui à demandé l'auth)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Help sur Chrome, mon site est n'importe comment
    Par zooffy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/12/2010, 18h45
  2. Réponses: 5
    Dernier message: 03/09/2007, 01h29
  3. Réponses: 36
    Dernier message: 26/03/2007, 20h00
  4. [HTML] Mon site est invisible oO
    Par florent dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/02/2006, 17h06

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