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

ASP.NET Discussion :

Syntaxe: recherche dans une bd


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 26
    Par défaut Syntaxe: recherche dans une bd
    Salut!

    Sur mon site, j'ai un formulaire pour que les gens puissent s'inscrire. Mais avant de les enregistrer, je veux m'assurer qu'ils ne le sont pas déjà.
    Je fais donc ceci:

    SelectStatementRegister = "SELECT * From Enregistrement WHERE nomEtablissement='" & nomEtablissement.SelectedItem.Value & "' AND numEmploye='" & numEmploye.Text & "'"

    Or, la variable nomEtablissement peut contenir un ' (ex: St-François d'Assise) ce qui vient tout dérègler. Je reçois alors le message suivant:

    Erreur de syntaxe (opérateur absent) dans l'expression 'nomEtablissement='St-François d'Assise' AND numEmploye='66''.

    Il manque donc un ' après le 66(ou tout autre numéro entré) puisque le ' de St-François d'Assise a tout décalé.

    Que dois-je faire?

    Merci!

  2. #2
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    rhooo, lalala, petit débutant ! ! ! !

    Essaie de faire un repalce sur tes variables chaine.
    Tu remplace le ' par un ' '
    tout simplement parce que SQL prens les ' comme séparateur de string et donc il faut les doubler pour anuler leur effet et les conserver dans la chaine.

    @+

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par zooffy
    rhooo, lalala, petit débutant ! ! ! !

    Essaie de faire un repalce sur tes variables chaine.
    Tu remplace le ' par un ' '
    tout simplement parce que SQL prens les ' comme séparateur de string et donc il faut les doubler pour anuler leur effet et les conserver dans la chaine.

    @+
    rhooo, lalala, petit débutant aussi !

    La bonne méthode est d'utiliser des SqlParameter qui vont eux-même faire l'échappement des caractères spéciaux. Fais une recherche dans le forum, tu trouveras plein de topics qui parlent des SqlParameter.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre éprouvé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut
    C'est même qq chose à faire SYSTEMATIQUEMENT !!! Surtout si c'est des paramètres textuels en get ou des champ texte libre.
    C'est la faille de sécurité la plus connue et la plus simple, l'injonction de code.
    Imagine qu'un petit vicieux se débrouille pour faire passer un parametre du style ';delete * from enregistrement;

    Ca va faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * From Enregistrement WHERE nomEtablissement='...' AND numEmploye='';delete * from enregistrement;
    Plutôt pas cool

    L.

  5. #5
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Bonjour

    Juste un détail pour faire mon pénible :
    "Injection de code" et non pas "Injonction de code"

    Sinon essai de mettre un ';delete * from ma_Table dans un formulaire, par curiosité

    [/pénible]

    A bientôt

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    ah oui interressant comme feinte ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Syntaxe: Recherche dans une bd
    Par SirTurbo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/05/2007, 13h16
  2. Syntaxe: recherche dans une bd
    Par SirTurbo dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/05/2007, 02h03
  3. recherche dans une table Access en ASP
    Par D-D dans le forum ASP
    Réponses: 3
    Dernier message: 09/06/2004, 10h12
  4. Problème de recherche dans une BD
    Par ledevelopeur dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/04/2004, 09h49
  5. [BPW]Problème de recherche dans une boîte liste
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 14
    Dernier message: 05/07/2003, 15h10

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