Requêtes SQL et '

Steph -  
 Steph -
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 33415 Statut Modérateur 15 667
 
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
mohammed
 
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 33415 Statut Modérateur 15 667 > mohammed
 
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
Steph
 
Ok, merci, je vais essayer d'implémenter ça ... je verrai si ça fonctionne

Merci beaucoup
0