Contrôle d' accès
Posséder une partie protégée dans un site implique un contrôle des accès. Tous les concepteurs de site protègent la première page ou utilisent la page de login comme page d' entrée. Les autres pages ne sont souvent pas protégée ni contrôlées. Ce qui implique qu 'une personne ayant noté le lien de la seconde page peut accéder à la partie protégée sans s' annoncer et sans contrôle. Il peut entrer sur votre site en tapant le chemin de la seconde page dans sa barre d' adresse.
Je vous propose une 4 fichiers qui vous permettront de protéger toutes les pages par un simple include.
Le principe de fonctionnement est simple. Commencer par inclure le fichier ctrl.asp en début des pages à contrôler. Lorsque la page est demandée par un visiteur, le fichier ctrl.asp contrôle si la variable session a été initialisée. Si c' est le cas, la page est envoyée. Dans le cas contraire, cela signifie que le visiteur ne s' est pas annoncé. C' est donc la page de login qui est envoyée à la place de la page demandée. Si le login et le mot de passe entré par le visiteur est correcte, la page demandée est envoyée.
Les fichiers
Le fichier ctrl.asp
<%
if session("login")<>"ok" then
session("origine")=Request.ServerVariables("PATH_INFO")
response.redirect("ctrl_page/login.asp")
end if
%>
La variable session "login" est contrôlée. Si sa valeur est différente de ok, cela signifie que la page login n'a pas été utilisé ou que la durée de la session est dépassée. Le fichier va dans ce cas, faire les opérations suivantes :
La page d' origine est mémorisée
La page de login est lancée à la place de la page demandée.
Si la variable session "login" a la valeur ok, rien ne se passe et la page demandée est envoyée.
Le fichier login.asp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Login</title>
</head>
<body>
<form method="post" action="gestion.asp" name="controle">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Login:</td>
<td><input name="Nom" type="text" size="15"></td>
</tr>
<tr>
<td nowrap>Mot de passe: </td>
<td><input name="Code" type="password" size="15"></td>
</tr>
<tr>
<td nowrap> </td>
<td><input name="submit" type='submit' value='Envoyer'></td>
</tr>
</table>
</form>
</body>
</html>
Le fichier demande le login et le mot de passe avant de les transmettre au fichier gestion.asp
Le fichier gestion.asp
<%
login = "login"
passe = "passe"
session("login")=""
if (request("Nom")= login) then
if (request("Code")= passe) then
session("login")="ok"
response.redirect(session("origine"))
end if
end if
response.redirect("faux.htm")
%>
Dans cet exemple, le login et le mot de passe sont les mêmes pour tous les visiteurs.
Le login est d' abord contrôlé. S' il est correct, c' est le mot de passe qui est contrôlé. Si tout est correct, la valeur de la variable session est mis à "ok" pour que les autres pages ne redemandent pas le login.
Le programme renvoi au visiteur la page qui avait été demandé et qui avait été mémorisée dans la variable session "origine".
Si le mot de passe ou le login est faux, c' est la page faux.htm qui est envoyée.
Le fichier faux.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>FAUX</title>
</head>
<body>
<div align="center">
<br>
Accès Interdit<br>
<br>
<a href="login.asp">Retour</a>
</div>
</body>
</html>
Conclusion
Sur votre propre site, il faudra bien faire attention aux différents chemins des fichiers de contrôle. Une personnalisation des login est mot de passe est recommandée en changeant les deux premières ligne du fichier gestion.asp.
Tester
Sources dans un fichier ZIP
|