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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par nflowerpower Voir le message
    Aucun développeur asp.net ne devrait utiliser la concaténation de chaine.
    Et pourtant... Si tu savais le nombre de candidats en entretiens (même sans être junior) qui ne connaissent pas les requêtes parametrées... Sur ce forum aussi, 8fois sur 10 c'est une concaténation

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Sur ce forum aussi, 8fois sur 10 c'est une concaténation
    Je trouve ton estimation plutôt optimiste

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Et pourtant... Si tu savais le nombre de candidats en entretiens (même sans être junior) qui ne connaissent pas les requêtes parametrées... Sur ce forum aussi, 8fois sur 10 c'est une concaténation
    Ya des choses qu'on peut pas faire avec une requête paramétrée.

    Suffit que la concaténation soit bien faite

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 71
    Par défaut
    Citation Envoyé par Idelways Voir le message
    Une situation compliquée par le fait que seulement 6 Antivirus sur 43 sont en mesure de détecter la faille à l'heure de l'écriture de ces lignes.
    Quels sont les six antivirus qui sont en mesure de détecter cette faille ?

  5. #5
    Membre confirmé
    Profil pro
    azeazeae
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : azeazeae

    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Par défaut
    Citation Envoyé par matios Voir le message
    Quels sont les six antivirus qui sont en mesure de détecter cette faille ?
    AntiVir 7.11.15.240 2011.10.12 TR/Dropper.Gen
    ByteHero 1.0.0.1 2011.09.23 Trojan.Malware.Obscu.Gen.002
    Fortinet 4.3.370.0 2011.10.12 W32/Binder.RZ!tr
    Jiangmin 13.0.900 2011.10.12 Backdoor/Proxyier.a
    McAfee 5.400.0.1158 2011.10.12 Suspect-BA!D8F9360A6B87
    McAfee-GW-Edition 2010.1D 2011.10.12 Heuristic.LooksLike.Win32.Suspicious.J


    Citation Envoyé par Grabeuh Voir le message
    Les SGBD peuvent convertir une suite de caractères en hexadecimal en texte au moment de l'insertion grace à certaines fonctions embarquées. Je pense que ce type d'astuces doit passer à l'aise à travers la protection des formulaires.
    Exact, un "DecryptByPassphrase" par exemple passera.
    Les protections par defauts bloquent les attaques XSS mais pas les injections sql.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 67
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SqlCommand command = new SqlCommand("SELECT * FROM Dogs1 WHERE Name LIKE @Name", connection)
     command.Parameters.Add(new SqlParameter("Name", nameFromQueryString)
    Un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("SELECT * FROM Dogs1 WHERE Name LIKE {0}", nameFromQueryString)
    peut il suffir à se prémunir de ces attaques ?

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Marauder Voir le message
    Un String.Format("SELECT * FROM Dogs1 WHERE Name LIKE {0}", nameFromQueryString) peut il suffir à se prémunir de ces attaques ?
    Non, et encore moins que la première forme.

  8. #8
    Membre confirmé
    Profil pro
    azeazeae
    Inscrit en
    Septembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : azeazeae

    Informations forums :
    Inscription : Septembre 2002
    Messages : 114
    Par défaut
    L'utilisation de procedures stockées me parait le plus sécurisant.
    C'est moins souple évidemment, c'est du boulot en plus, il faut faire quelques pirouettes de temps en temps mais je pense que coté securité (injection sql) on ne se pose plus trop de question.

    De plus on peut gérer finement les droits sur les proc stock (qui execute quoi).

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Le problème majeur pour les injections SQL, c'est que certains systèmes ne proposent pas de fonction SQLEscape. Notamment SQL server.

    D'accord, les paramètres, c'est mieux, mais ce n'est pas une raison pour ne pas proposer la fonction. De plus, les paramètres ne servent à rien quand il est question de générer un script sous forme de fichier texte.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Marauder Voir le message
    Bonjour,

    SqlCommand command = new SqlCommand("SELECT * FROM Dogs1 WHERE Name LIKE @Name", connection)
    command.Parameters.Add(new SqlParameter("Name", nameFromQueryString)

    Un String.Format("SELECT * FROM Dogs1 WHERE Name LIKE {0}", nameFromQueryString) peut il suffir à se prémunir de ces attaques ?
    Au contraire, la première forme est parfaitement sûre, alors que la 2e introduit un risque d'injection...

    Citation Envoyé par Médinoc Voir le message
    Le problème majeur pour les injections SQL, c'est que certains systèmes ne proposent pas de fonction SQLEscape. Notamment SQL server.

    D'accord, les paramètres, c'est mieux, mais ce n'est pas une raison pour ne pas proposer la fonction. De plus, les paramètres ne servent à rien quand il est question de générer un script sous forme de fichier texte.
    Bah le problème avec une fonction du genre SQLEscape, c'est qu'il y a toujours un risque de mal l'utiliser... c'est comme avec les magic quotes de PHP, ça introduit souvent des bugs bizarre parce que ça a été utilisé de travers.

    Les requêtes paramétrées sont un peu plus longues à écrire, mais c'est pas non plus le bout du monde, et ça protège totalement contre l'injection SQL.

  11. #11
    Membre très actif
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Par défaut
    Je ne suis pas d'accord avec Lyche. Le développeur doit respecter un minimum de normes au niveau de son codage. C'est un fait.

    Mais le rôle des admins BD est de fournir des préconisations et aux responsables des développeurs de leurs faire appliquer. Le tout devant être pris en compte au niveau des charges de travail.

    Le développeur, son métier c'est d'écrire du code pas du SQL. Ce n'est pas sa spécialité. On ne peut pas tout connaitre sur tout. Chacun son secteur.

    Maintenant il est très facile et pratique de rejeter la faute sur le dernier maillon de la chaine.

    Pour moi c'est une défaillance collectives.

    Il ne faut pas non plus oublier que dans certaines des entreprises le développeur est aussi le responsable BD et le chef de projet. Il n'y a pas de miracle.

    Si on se rapproche du secteur du bâtiment, on ne demande pas au maçon de poser les tuiles sur le toit .

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par antrax2013 Voir le message
    Le développeur, son métier c'est d'écrire du code pas du SQL.
    Le SQL c'est pas du code ?
    Ca vient de sortir ?

    Ce n'est pas sa spécialité.
    Tu veux dire que ce n'est pas la tienne.

    On ne peut pas tout connaitre sur tout. Chacun son secteur.
    Euh oui ... mais si je peux comprendre qu'un développeur ne connaisse ni le HTML ni les CSS, je ne prendrais en revanche jamais un gars qui ne connait pas le SQL.

    Blague à part, écrire le code SQL d'une application nécessite de connaitre parfairtement l'aspect "métier" de celle ci; donc on ne peut pas imaginer une fraction de seconde comment le DBA, dont ce n'est pas le métier (je ne parle pas de coder en SQL, le DBA sait faire, mais de connaitre le métier de l'application) puisse s'occuper de cette tâche.

    Ou alors tu considère la base de données comme rien d'autre qu'une sorte de "super ISAM" juste destinée à servir des données à la demande...... (et c'est, hélas, plus fréquent qu'on ne le pense .....).

  13. #13
    Membre très actif
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Par défaut
    Je comprends ce que tu dis, Bluedeep, et l'entend bien. Là où pour toi qu'un développeur "n'y connaissent rien" en CSS ou HTML c'est pas grave. Je te réponds que de mon point de vue c'est la même chose pour le SQL.

    Faire des CSS et du HTML "efficasse", respectant les normes et compatible avec tout les navigateurs, c'est une affaire de "spécialistes". La base de données aussi. Après tout le monde peut en faire mais faut pas se plaindre de ce genre de mésaventure (injection SQL).

    Aujourd’hui on demande beaucoup trop au développeur.
    Si on prend le cas d'un projet web, on lui demande :
    - d'écrire dans un langage par exemple PHP les règles métiers
    - de faire des requettes SQL pour obtenir, stoker, modifier... ces données
    - de faire du HTML et des CSS pour faire de belle interfaces
    - de faire du javascript pour avoir du dynamisme

    Et après on se plaint qu'il ne soit pas bon partout.

    Pour moi le parallèle au développement c'est le BTP. Si tu fais construire une maison tu ne demanderas pas au peintre de te poser ton chauffage ni de te mettre tes tuiles sur ton toit. Alors pourquoi le fait-on avec le développeur ?

  14. #14
    Membre éclairé Avatar de Charvalos
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2010
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2010
    Messages : 356
    Par défaut
    Dans un sens, t'as pas tort.

    N'empêche, je me vois mal faire un site web avec PHP et demander à un, comme tu dit, "spécialiste" de base de données de me faire de simple requêtes SQL pour vérifier que la personne est bien inscrite ou encore pour ajouter quelque chose.

    Surtout que maintenant, avec PDO, t'as même plus besoin de casser la tête pour savoir comment sécuriser tes requêtes SQL. Un simple prepare() suffit.

  15. #15
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par antrax2013 Voir le message
    Faire des CSS et du HTML "efficasse", respectant les normes et compatible avec tout les navigateurs, c'est une affaire de "spécialistes".
    Oui, mais je voulais dire qu'un travail approximatif de ce coté là ne sapera pas les fondements du projet; cela peut être réglé a posteriori.(au prix d'une augmentation de la charge, il est vrai).

    Il n'en va pas du tout de même d'un "baclage" ou niveau du modèle de données ou des règles en bases.

    C'est de ce point de vue que j'ai infiniment moins de tolérance à une méconnaissance des mécaniques "cosmétiques" qu'à une méconnaissance de ce qui fait la base de 99% des projets IT : tout ce qui touche à la manipulation des données.

    La base de données aussi. Après tout le monde peut en faire mais faut pas se plaindre de ce genre de mésaventure (injection SQL).
    Pour moi la protection contre l'injection SQL se fait plutôt au niveau de la couche d'accès aux données, voire au dessus, mais certainement pas dans la base. D'autant que la DAL n'a pas à "taper" dans les tables en direct : en ne tapant que sur les PS et les Views, la sensibilité à l'injection SQL devient quand même des plus réduites.

    Si on prend le cas d'un projet web, on lui demande :
    - d'écrire dans un langage par exemple PHP les règles métiers
    - de faire des requettes SQL pour obtenir, stoker, modifier... ces données
    Là je ne suis pas d'accord : Une bonne partie des règles métiers se code au niveau de la base. Une base, comme je le disais dans mon poste supra, c'est pas un "super ISAM". (et, encore une fois, on la voit trop souvent utilisée ainsi, sans même parler des process DB <-> DB qui transitent par le serveur applicatif .....).

  16. #16
    Invité de passage
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Blague à part, écrire le code SQL d'une application nécessite de connaitre parfairtement l'aspect "métier" de celle ci; donc on ne peut pas imaginer une fraction de seconde comment le DBA, dont ce n'est pas le métier (je ne parle pas de coder en SQL, le DBA sait faire, mais de connaitre le métier de l'application) puisse s'occuper de cette tâche.
    Je ne suis pas trop d'accord avec toi. Bien sur que les dba doivent connaître les techniques pour éviter les injections de code via les base de données, même si coder n'est pas leur métier. (Personnellement quasiment tous les DBA que j'ai rencontré étaient issus du monde du dev donc de ce coté pas de pb)

    Au de la de ça je rejoint Antrax pour dire que pour moi la sécurité d'une application est l'affaire de tous:
    • le chef de projet doit bien insister dessus, le prévoir dans ses phases de test et le vérifier
    • le développeur doit coder en prenant cette problématique en compte, et évidemment tester.
    • le dba doit communiquer et insister dessus, voir proposer des moyens de prévention s'il voit que le programmeur ne maîtrise pas bien le sujet.

  17. #17
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par antrax2013 Voir le message
    Faire des CSS et du HTML "efficasse", respectant les normes et compatible avec tout les navigateurs, c'est une affaire de "spécialistes". La base de données aussi. Après tout le monde peut en faire mais faut pas se plaindre de ce genre de mésaventure (injection SQL).
    Un développeur qui, en entretien, n'utilise pas les requêtes parametrées et me fait une concaténation, a moins qu'il soit vraiment une bête ailleurs, pour moi c'est non. Même si c'est un junior: c'est la base

  18. #18
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Un développeur qui, en entretien, n'utilise pas les requêtes parametrées et me fait une concaténation, a moins qu'il soit vraiment une bête ailleurs, pour moi c'est non. Même si c'est un junior: c'est la base
    Et si je te réponds que SYBASE n'accepte pas les paramètres sur des champs TEXT, tu me prends pas?

  19. #19
    Membre très actif
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Un développeur qui, en entretien, n'utilise pas les requêtes parametrées et me fait une concaténation, a moins qu'il soit vraiment une bête ailleurs, pour moi c'est non. Même si c'est un junior: c'est la base
    Bien que je sois d'accord, partiellement, avec toi. On voit bien que c'est loin d'être le cas.

    Pour éviter le problème il faut y être sensibilisé et être dans une "structure" qui s'en préoccupe.

    Et quelque part ça tu ne peux pas l’exiger d'un candidat junior. De plus tu ne peux te battre seul.

    En plus à mon sens ça ne doit pas être rédhibitoire à l'embauche d'une personne. Les bonnes pratiques ça acquièrent bien souvent au contact des plus chevronnés ou en subissant les effets d'une mauvaise pratique. C'est aussi le rôle de l'entreprise de "former".

    Après si tu es expert c'est autre chose. Mais bon on dérive du sujet.

  20. #20
    Nouveau candidat au Club
    Homme Profil pro
    administrateur de réseaux et services
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : administrateur de réseaux et services
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut
    Un millon c tt

Discussions similaires

  1. Réponses: 33
    Dernier message: 27/10/2011, 16h03
  2. Réponses: 16
    Dernier message: 31/03/2011, 13h36
  3. Réponses: 3
    Dernier message: 11/11/2009, 16h25
  4. injection SQL avec magic_quotes_gpc sur on
    Par elcoyotos dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2009, 18h33
  5. remplir une Bdd sql serveur a travers un formulaire Asp.net
    Par mead_Developper dans le forum ASP.NET
    Réponses: 9
    Dernier message: 28/05/2009, 11h36

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