Pb de guillemet !!

cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 - 23 mai 2007 à 19:33
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 24 mai 2007 à 14:29
Bonsoir a tous, je devellope actuellement une application web ASP.
Je doit effectué un requete pour vérifier le nom d'utilisateur et le mot de passe c'est pourquoi je recupère les valeurs saisi dans les input type text de mon formulaire (via le request.form("elt")
Voici ma requete

Sql="select LoginName, Password from users where LoginName=" & request.form("uti") & "and Password=" & request.form("mdp")

Si vous voyez une erreur merci de me le signaler car je ne trouve sa m'embete !!

6 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 mai 2007 à 00:40
Bonsoir,

j'espere que c'est une blague ? =)

As ton avis, que se passe t'il si je met dans la textbox uti "'admin' --" ? ben je serais connecté en tant qu'admin ! Je te conseil vivement de regarder les procédures stockées qui d'une part corrigeront le problème de guillemet que tu as mais surtout rendra beaucoup plus secure ton application.  

<hr />Cyril - MSP - MCTS ASP.net & SQL
0
cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 1
24 mai 2007 à 09:07
Bonjour et merci de ta réponse.

Cependant je ne suis pas d'accord avec toi tout les logins et le les mot de passe sont stocké dans une base et l'admin à aussi un mot de passe je ne voit pas le problème d'insécurité. Chaque utilisateur a un statut aussi que je vérifie celon les actions qu'il veut effectuer.
Pour revenir a mon problème je n'arrive vraiment pas a trouver l'erreur de cette requête si vous pouviez m'aider svp !!
Sachez que quand j'enleve le where sa marche sa doit être a cause d'une concaténation mal écrite nan???

Merci de votre aide
0
zuff Messages postés 79 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 21 octobre 2008
24 mai 2007 à 10:51
Le problème doit venir que n'as pas d'espace avant le "and" (& "and  => & " and).
 
Effectivement, tu as un problème de sécurité. Si tu n'aimes pas les procédures stockées, voici une solution simple de protection:

 Sql="select LoginName, Password from users where LoginName='" & request.form("uti").ToString.Replace(
"'",
"`")
& "' and Password='" & request.form("mdp").ToString.Replace("'", "`") & "'"
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 mai 2007 à 12:11
le probl_me est que si je met "admin' --" dans la textbox ta requete devient

select LoginName, Password from users where LoginName='admin' -- ' and password = ''

le -- correspond aux commentaires ... donc là tu as une ENORME faille.

<hr />Cyril - MSP - MCTS ASP.net & SQL
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zuff Messages postés 79 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 21 octobre 2008
24 mai 2007 à 13:44
Avec le replace la requete devient :
select LoginName, Password from users where LoginName='admin` -- ' and password = ''
et donc pas de faille !
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 mai 2007 à 14:29
oui avec le replace niveau sécu c'est mieux mais les procédures stockes ou tout simplement les requetes parametrés permette d'une part de pas avoir de sql injection et d'autre part de vérifier le type des arguments
SqlCommand command new SqlCommand("select * from toto where machin @truc", conn)
command.Parameters.Add("@truc", SqlDbType.int).Value = 3;

et si on passe autre chose qu'un nombre c'est .net qui plante et pas sql :-)

<hr />Cyril - MSP - MCTS ASP.net & SQL
0
Rejoignez-nous