Requêtes SQL et '

Fermé
Steph - 31 mars 2005 à 20:49
 Steph - 1 avril 2005 à 08:29
Bonjour tout le monde

J'ai fais une requête SQL sous vb6 pour une table access2000 qui ressemble à ça :

SQL = "Select * from MaTable where MonChamp = ' " & MaVariable & " ' "

La syntaxe est bonne et la requête fonctionne très bien si l'utilisateur n'entre pas de caratère spéciaux (' , " , _ , ...). Dans ma textbox, l'utilisateur peut entrer tous les caractères qu'il veut, et lorsqu'il entre le caractère '(entre autre) la requête ne s'exécute pas ...

J'ai chercher un peu partout sans beaucoup de résultat.

Est-ce que quelqu'un pourrait m'aider. J'aimerai savoir comment insérer ma variable dans la requête SQL correctement pour que l'utilisateur puisse entrer tout ce qu'il veut.

Merci d'avance.

1 réponse

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
31 mars 2005 à 22:23
ALERTE ALERTE - gros risque de sécurité détecté.

Ton application peut être attaquée par SQL-Injection.
(Courant quand on débute).

Il est impératif de doubler toute apostrophe trouvée dans une chaîne avant de l'insérer dans une requête SQL.


Regarde: Tu as fait un champ de saisie que tu met dans MaVariable et l'insère dans la requête SQL. Ok.
Maintenant imagine ce qui se passe si je tape ça dans ton champ:
'; delete MaTable; select '



Ton programme va insérer ce que j'ai tapé dans ta requête SQL, qui devient:

Select * from MaTable where MonChamp = ' '; delete MaTable; select ' '


J'ai réussi à effacer le contenu de ta table !



En doublant les apostrophes, le problème est en principe réglé.
Exemple:
l'accent 
devient --->
l''accent


et là ça passe.
0
Salut SEBSAUVAGE,
je voudrais faire une req paramétrée en usant 2 variable d'un formulaire.
En faite j'ai unez table de personnel et je voudrais afficher les pers inscrits entre 2 dates entrées à partire du clavier donc je voudrais que l'utilisateur entre ces données et le clique sur un boutton déclanche l'execution de la req.
(une autre méthode que lafction entre...et(between)).
je travailsous access2000
Merci
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659 > mohammed
31 mars 2005 à 23:32
Il faut récupérer la valeur saisie dans les champs et lancer la requête SQL correspondante.

Access c'est pas mon truc.
0
Ok, merci, je vais essayer d'implémenter ça ... je verrai si ça fonctionne

Merci beaucoup
0