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

Struts 1 Java Discussion :

Comment me protéger contre les "SQL Injection" ?


Sujet :

Struts 1 Java

  1. #1
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut Comment me protéger contre les "SQL Injection" ?
    Bonjour,


    voilà j'ai une application WEB J2EE (struts/EJB/BD). Je sais que mon site est vulnérable à des "SQL Injection". J'aimerais savoir comment contrer tout cela.

    Des conseils, des solutions SVP.

    Merci

  2. #2
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut
    est ce que le fait de filtrer la requete dans la méthode validate() du validatorform peut empécher l'injection sql?
    par exemple blancer une erreur si la requete contient des mots telsque "select","drop","update"...

    Merci pour la réponse

  3. #3
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Je crois que le forum Base de données en génral serait plus adapté à ta question.

    Sinon, voici quelques techniques de base pour se protéger du SQL Injection :
    • blacklisting : interdire que quelques mots clés de SQL soient présents dans un input utilisateur : or, select, delete, drop, etc.
    • whitelisting : vérifier que l'entrée utilisateur respecte un format donnée (par expression régulière par exemple) : [0-9]+ pour un format numérique, etc. Le truc c'est de limiter les caractères accéptés au strict nécessaire : pas de ";" par exemple dans un login.
    • effectuer un "escape" sur les entrées utilisateur : despecialiser les apostrophes et compagnie. PreparedStatement de JDBC effectue cela automatiquement, donc usez d'elle à volonté.
    • Désactiver le multi-requêtage dans la BD.
    • Utiliser impérativement des comptes BD sur mesure avec le strict minimum de droits pour toute requête où on injecte un contenu utilisateur.


    Voilou. Ce ne sont que quelques techniques générales, mais une recherche approfondie sur le thème s'impose pour une application professionnelle.

    Bonne chance.

  4. #4
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut
    Le sujet à la base était dans le forum mysql et il a été transféré ici.

    En tous cas, merci pour les infos

  5. #5
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 898
    Points
    1 898
    Par défaut
    Hibernate travaillant en objet, il doit déjà contrôler cela lors de l'insertion d'un objet dans la base : à contrôler.

    Mais je ne comprendrais pas beaucoup que l'on interdise des caractères comme ; ou " ou ' pour la simple raison qu'il y a un risque : en effet pourquoi une donnée ne pourrait pas contenir ces caractères ?

    Il faut donc trouver les mécanismes qui font le travail de contrôle à notre place (à chaque fois que cela est possible) mais en aucun cas restreindre le format des données (sauf cas de force majeure).

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. [phpBB] Comment luttez-vous contre les spams ?
    Par boteha dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 12/07/2008, 20h53
  3. Comment se protéger contre le vol de code source ?
    Par lp38 dans le forum Visual Studio
    Réponses: 4
    Dernier message: 18/07/2007, 21h14
  4. Se protéger contre les buffers overflows
    Par pharaonline dans le forum C
    Réponses: 2
    Dernier message: 11/06/2006, 22h25

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