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 :

Générer des "ticks" avec PDO


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 127
    Par défaut Générer des "ticks" avec PDO
    Bonjour à vous

    J'ai un petit soucis, je m'explique.

    J'aimerai faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // $oPdo est une instance de PDO
    $oPdo->prepare ('USE ?;')->execute (array ($_GET['dbname']));
    Sauf que PDO va mettre "my_database' entre simple quotes. Et la commande USE accepte uniquement des doubles quotes ("), ou des "ticks" (`). Du coup, la requête plante.

    Mais comme vous le voyez, je ne peux pas trop faire confiance à ce qui arrive (vu que ca vient de $_GET), et donc par sécurité, je suis obligé d'échaper la variable pour la protéger des attaques de type SQL Injection.

    Mais du coup je ne sais pas comment faire ! :s

    Auriez-vous une idée ?

    Merci beaucoup de votre aide !

  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
    Par défaut
    Je crois que les requetes préparées ne sont pas prévues pour prendre des noms de table comme argument.
    De la meme facon, on ne peut pas faire un SELECT * FROM :table
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 127
    Par défaut
    Mais du coup, j'ai quand même fait des recherches un peu partout, j'ai parlé avec les gars de php sur le channel irc.
    Il s'est avéré que la meilleure facon serait d'utiliser les expressions régulières.

    Je pensais juste vérifier s'il y avait l'existence de caractères non autorisés, c'est à dire /, \ et .
    (d'après la doc MySQL)

    Mais le type peux faire des sql injections en mettant des choses genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql';DELETE * FROM mysql.user;
    par exemple, non ? c'est ca en fait qui me chagrinne :p

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    Citation Envoyé par codefalse Voir le message
    Mais le type peux faire des sql injections en mettant des choses genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql';DELETE * FROM mysql.user;
    par exemple, non ? c'est ca en fait qui me chagrinne :p
    oui tu as raison de t'inquiéter de ça

    pour être sur d'avoir une base valide tu peux par exemple lister toutes les base de données avec "SHOW DATABASES" et vérifier si la variables est dans la liste :
    http://dev.mysql.com/doc/refman/5.0/...databases.html

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 127
    Par défaut
    Ca peux faire un peu lourd tu ne crois pas ?

    En effet si tu prends en compte le fait qu'il peux y avoir beaucoup de bases de données, ca ferait deux fois la requête au lieu d'une. Bon après elle peux être en cache ....

    ralala

Discussions similaires

  1. Générer des noms de champs avec des tableaux
    Par MV1908 dans le forum Zend_Form
    Réponses: 2
    Dernier message: 26/05/2008, 16h16
  2. Générer des jar sous Eclipse Avec Maven
    Par zerobug dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/04/2008, 22h11

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