Forum de discussion
Forum « Programmation ASP » (archives)
Re: authentification
Envoyé: 29 juillet 2004, 8h08 par Oznog
Attention, ce message fait déjà partie d'une discussion. Tu n'avait pas à créer un nouveau sujet.
Par contre félicitations, c'est très bien. Il me manque plusieurs bout de code pour bien en juger mais ça semble fonctionnel.
2 erreurs.
1. Ferme et vide toujours tes objets avant une redirection. Pour éviter ce que l'on nomme le "Round-robin", tes objets restent ouvert sur le serveur pour rien pour une période de 20 minutes (selon la session). Tu as 20 visiteur ça fait plus de 33 heures cumuler de ressources serveur gaspillée. Et spécifie une page pour la redirection! J'y revient dans les conseils plus bas.
2. Tu devrais faire passer une requète SQL à la table au lieu de l'ouvrir au complet :
strSQL = "SELECT nom, motdepasse FROM tblutilisateurs WHERE nom = '" & strnomutilisateur & "';"
objrs.Open strSQL, objconn
Il suffit alors de tester si l'enregistrement a été trouvé :
If objrs.BOF And objrs.EOF Then
' Ferme et vide les objets
' Redirection erreur identification
else
if not (strcomp(objrs("motdepasse"),request.form("motdepasse"),vbbinarycompare)=0) then
' Ferme et vide les objets
' Redirection erreur de mot de passe
else
' Ferme et vide les objets
' Identification et mot de passe accepté
end if
NOTE : Idéalement tu devrais "nettoyer" la requète HTTP (les request.form) pour t'assurer qu'elle ne contient pas de mots réservés SQL par exemple ou autres caractères suceptible de faire planter ou craquer ta base.
Enfin, j'ai deux améliorations à te proposer, surtout une concernant la gestion des erreurs et la redirection. Quand tu détecte une erreur, tu lui assigne un numéro.
0 = pas d'erreur
1 = Identification erronée!
2 = Mauvais mot de passe!
La redirection directement sur le formulaire d'identification de cette façon :
Response.Redirect(formulaire.asp?err=2)
De cette façon tu peux tester sur ton formulaire la présence de "err"
if request.querystring("err") = 2 then
sMEssErreur = "Mot de passe erroné"
end if
2. Tu devrais aussi tester si l'identification et le mot de passe contiennent bien des valeur avant d'ouvrir la base et tester l'identification.
if trim(request.form("nom")) <> "" and trim(request.form("motdepasse")) <> "" then
Mais dans l'ensemble s'et pas mal. Tu verra avec le temps à améliorer d'avantage l'identification, avec encodage ou avec des service comme la redirection directe sur la page demandé sasn autorisation etc.
Ciao
Oznog
Réponses
|