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 :

PDO et echappement des caractères [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 35
    Points
    35
    Par défaut PDO et echappement des caractères
    Bonjour,

    Je transforme mes vieilles fonctions Mysql vers PHP Data Objects et je ne serais pas contre quelques éclaircissements concernant l’échappement des caractères.

    Pour faciliter la portabilité du site, j'avais pris l'habitude de désactiver purement et simplement magic_quotes_gpc et de gérer l’échappement dans le code avec la fonction addslashes etc...
    Mais j'ai cru comprendre que addslashes présentait quelques failles.

    La fonction mysql_real_escape_string() est quant à elle déconseillée.
    http://php.net/manual/fr/function.my...ape-string.php

    Avec PDO, pour communiquer avec la base de données, je dois apparemment opter pour PDO::query ou PDO::exec si la requête est plutôt destinée à être exécutée une fois et PDO::prepare pour plusieurs fois.


    Pour PDO*::prepare, dans la doc il est indiqué
    aident à prévenir les attaques par injection SQL en éliminant le besoin de protéger les paramètres manuellement.
    http://fr.php.net/manual/fr/pdo.prepare.php

    "Aident" ? Dois-je comprendre qu'il faut quand même prendre certaines précautions ?

    Pour PDO*::query et exec, c'est encore moins clair pour moi. Il est question de PDO::quote mais:
    Si vous utilisez cette fonction pour construire des requêtes SQL, vous êtes vivement invités à utiliser PDO::prepare() pour préparer les requêtes SQL
    avec des paramètres liés au lieu d'utiliser PDO::quote() pour interpréter les entrées utilisateur dans la requête SQL.
    http://www.php.net/manual/fr/pdo.quote.php

    Donc pour une requête avec entrées utilisateurs, je dois aussi utiliser PDO::prepare même si elle est destinée à n'être exécutée qu'une seul fois ??

    J'avoue, je comprends plus, y a t'il une possibilité d’échapper proprement PDO::exec et PDO::query ou je les laisse définitivement tomber et je n'utilise que PDO::prepare?

    Merci beaucoup pour le coup de main.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Je vais te filer un bon tuyau pour que tu arrêtes de te faire mal à la tête :
    Règle 1 : toujours préparer ses requêtes avec PDO,
    Règle 2 : toujours préparer ses requêtes avec PDO,
    Règle 3 : toujours préparer ses requêtes avec PDO,
    ...

    Dans 99% des cas pas le peine de t'embêter avec une fois je prépare une autre fois non.
    Après en fonction de la base de données attaquée, tu auras parfois l'obligation de te passer de PDO et tout monter à la main car le type de champ par exemple n'est pas pris en charge ex: sous Posgresql avec ARRAY[] et HSTORE.

    Pour tous les autres cas, reste cohérent et tient toi toujours à la même règle.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Je vais te filer un bon tuyau pour que tu arrêtes de te faire mal à la tête
    Si peu , merci pour elle!

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

Discussions similaires

  1. Echappement des caractères réservés
    Par serge-B dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/06/2011, 15h56
  2. [Castor] Echappement des caractères <> dans un fichier XML généré par Castor XML
    Par mbinte dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 22/10/2008, 14h33
  3. Echapper des caractères avec VBA pour requete SQL
    Par mpereg dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2008, 03h41
  4. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54
  5. insérer des caractères accentués INFORMIX/JDBC
    Par donde dans le forum Informix
    Réponses: 2
    Dernier message: 19/11/2002, 20h02

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