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

Requêtes MySQL Discussion :

Sécurité - Inject SQL et %


Sujet :

Requêtes MySQL

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 314
    Points : 265
    Points
    265
    Par défaut Sécurité - Inject SQL et %
    Est-il normal que mysql accepte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     select * from matable where mavar = '1%'
    Je croyais que % était un caractère joker uniquement pour LIKE et un autre truc mais pas pour = ???

  2. #2
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Pour te protéger des injections sql voici la fonction à utiliser avec mysql:

    mysql_real_escape_string

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 314
    Points : 265
    Points
    265
    Par défaut
    ouais je sais lol je l'ai découvert il y un mois environ Mais justement cette fonction n'enlève pas, entre autres, ce caractère : %.
    Donc à moins de refaire un contrôle en plus pas moyen de retirer ce %... ce qui à la limite n'était pas génant à priori quand on utilisait pas de LIKE mais un =.

    Apparement, suite à quelques tests perso il semblerait que le % dans après un = soit ignoré par mysql (ou purement sql d'ailleurs ?)...

    Est-ce que quelqu'un pourrait me le confirmer et/ou m'expliquer le pourquoi du comment ?

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    En dehors du LIKE % est tout simplement considéré comme le caractère pourcent classique
    Pensez au bouton

  5. #5
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 314
    Points : 265
    Points
    265
    Par défaut
    pourtant quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable where mavar = '1%'
    il me renvoit bien l'enregistrement corespondant à mavar = 1 alors qu'en théorie il ne devrait rien trouver...

  6. #6
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Pas chez moi sous MySQL 5.0
    Pensez au bouton

  7. #7
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 314
    Points : 265
    Points
    265
    Par défaut
    Moi j'ai MySQL 4.0.15 et 4.0.21
    Ce serait donc un problème inhérant à la version de mysql... soit.

    D'ailleurs ce genre de requête provoque un bug avec PHPmyadmin :
    Ca n'affiche qu'un résultat à l'écran pour ma requête pourtant ça propose de voir plusieurs pages de résultat...

    J'ai remarqué que la requête suivante passe aussi !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable where mavar= '1%kjhhsqkjqhsdfh'
    Quand mysql 4.0.15 ou 4.0.21 rencontrerait un % dans un = il ignorerait tout ce qu'il y a derrière y compris le % ...

    bizarre bizarre...

  8. #8
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 314
    Points : 265
    Points
    265
    Par défaut
    bon en fait plus généralement je m'aperçois qu'on peut mettre n'importe quoi après un = pour une recherche sur un entier en tout cas.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable where mavar='1sdf56s4df5s4'
    est traduit automatiquement par mysql en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable where mavar='1'
    Pourquoi mysql est-il donc si permissif ? Est-ce que vous voyez des failles d'injection qui pourraient intervenir ?

    On peut conclure que cette permissivité n'est pas dangereuse en soit à condition de contrôler comme d'habitude les contenus des variables GET, POST etc...

  9. #9
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Attends mais quel est le type de mavar ?
    Pensez au bouton

  10. #10
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 314
    Points : 265
    Points
    265
    Par défaut
    un integer why ?

  11. #11
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par bigsister
    un integer why ?
    Citation Envoyé par bigsister
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable where mavar='1sdf56s4df5s4'
    Tu ne vois pas comme un léger souci ?
    Pensez au bouton

  12. #12
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 314
    Points : 265
    Points
    265
    Par défaut
    ??? Je récupère mavar dans un GET ou un POST ça peut très bien être n'importe quoi

  13. #13
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Ce n'est pas au SGBD de faire du contrôle de saisie, lui il a une colonne de type INT donc il s'attend à une comparaison avec un entier.
    Comment la valeur de la colonne mavar peut être égale à '1sdf56s4df5s4' si c'est un INT ?
    Pensez au bouton

  14. #14
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2002
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 314
    Points : 265
    Points
    265
    Par défaut
    je suis d'accord mais en fait j'espèrais simplement que mysql ne me renverrait pas d'enregistrement ou au pire une erreur SQL ...

  15. #15
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    ben il suffit de traiter tes données.
    is_numeric()...

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

Discussions similaires

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

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