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 :

Sécurité contre les injections SQL ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 55
    Points : 49
    Points
    49
    Par défaut Sécurité contre les injections SQL ?
    Salut à tous !

    Je développe mon petit CMS, en php mysql, et pour diminuer le risque d'injections de requêtes SQL, j'ai fait des procédures mysql pour les insert et update.
    Alors tout marche bien sur le serveur de chez moi, mais quand je le mets en ligne sur un mutualisé je découvre avec horreur et stupéfaction que ça, comme on dit, ch*e dans la colle.
    Et pour cause, après de courtes recherches, je m'aperçois que l'hébergeur bloque volontairement les droits pour changer les routines, de peur que ça fasse des boucles infinies, ou je ne sais quelle autre excuse bidon ( ) !

    Bref, je dois me retaper les fonctions qui gèrent les ajouts et modifs MySQL. Mais je tiens tout de même à avoir un minimum de sécurité face aux injections de requêtes, et je voudrais votre avis.

    Est-ce que je dois vérifier systématiquement toutes les données à mettre dans la base, avec php, avant de faire les requêtes ?
    Est-ce que mysqli, en style orienté objet, propose ce genre de sécu, sans que je doive faire quoi que ce soit ? (laissez moi rêver ^^)
    Est-ce qu'il existe une autre façon de faire ?
    Est-ce que je dois changer d'hébergeur ?

  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
    Procédural ou objet, mysqli a les mêmes fonctionnalités.
    La méthode recommandée est d'utiliser des requêtes préparées (également possible avec PDO).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Est-ce que je dois vérifier systématiquement toutes les données à mettre dans la base, avec php, avant de faire les requêtes ?
    Si ces données proviennent de l'utilisateur, OUI.

    Est-ce que mysqli, en style orienté objet, propose ce genre de sécu, sans que je doive faire quoi que ce soit ? (laissez moi rêver ^^)
    OUI (enfin presque), il te suffit d'utiliser les requêtes préparées au lieu de faire une simple query.

    Est-ce qu'il existe une autre façon de faire ?
    Oui, l'extension PDO, qui est une alternative extrêmement similaire à Mysqli mais qui au lieu d'être spécifique à mysql comme l'est mysqli, est générique quel que soit le SGBD utilisé.

    Est-ce que je dois changer d'hébergeur ?
    Ce que tu évoques ici n'est en rien une raison suffisante en tout cas.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 55
    Points : 49
    Points
    49
    Par défaut
    J'ai bien fait de poser la question, je découvre les requêtes préparées, tout comme PDO !
    Bon, je vais RTFM pour ensuite aller me noyer dans une série de tests.

    Merci pour vos réponses, elles me permettent de faire bien évoluer mon code


    PS : Je plaisantais, je vais pas changer d'hébergeur pour ça ^^

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Si tu es obligé de te retaper l'essentiel du code de tes requêtes autant apprendre à utiliser tout de suite PDO. C'est beaucoup plus agréable à écrire et PDO possède aussi des fonctionnalités très pratiques comme l'envoi d'un tableau pour binder les variables, plutôt que d'être obligé de les binder individuellement avec mysqli_

    En résumé :

    mysql_ -> Out (obsolète)
    mysqli_ -> Ok mais principalement conçu pour mettre à jour des anciens code mysql_ ou les faire évoluer. Inconvénient : code désagréable à écrire et assez laborieux par rapport à PDO
    PDO -> Ok et plus de fonctionnalités pratiques que mysqli_ et permet aussi d'avoir moins de code à réécrire si on change de SGBD

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 55
    Points : 49
    Points
    49
    Par défaut
    Effectivement j'ai tout passé en PDO, et je dois dire que je ne le regrette absolument pas ! C'est très souple et optimisé, tout ce que j'aime

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

Discussions similaires

  1. [MySQL] se protéger contre les injections sql
    Par keusty78 dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 23/09/2009, 15h01
  2. Sécurité contre les injections SQL
    Par Generation-Web dans le forum Langage
    Réponses: 2
    Dernier message: 27/11/2008, 14h17
  3. Prévention contre les injections SQL
    Par Community Management dans le forum ASP
    Réponses: 0
    Dernier message: 29/07/2008, 12h50
  4. Lutter contre les injections SQL
    Par EvilAngel dans le forum ASP
    Réponses: 4
    Dernier message: 15/06/2006, 17h27

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