Téléchargé 31 fois
Vote des utilisateurs
0
0
Détails
Licence : Non renseignée
Mise en ligne le 15 février 2011
Langue : Français
Référencé dans
Navigation
Protéger un espace d'administration
Protéger un espace d'administration
Ce code permet de protéger l'accès à une page.
Pour l'essayer :
* Lancer la page sur le serveur
* Saisissez les informations telles que le login et le mot de passe
* Cliquer sur OK
Pour changer le login et le mot de passe, regarder dans le code, tout y est expliqué.
Pour l'essayer :
* Lancer la page sur le serveur
* Saisissez les informations telles que le login et le mot de passe
* Cliquer sur OK
Pour changer le login et le mot de passe, regarder dans le code, tout y est expliqué.
Bonjour,
Merci à Ludovic pour son code.
Je n'ai pas trop aimé d'abord les fautes d'orthographe.
Ensuite, il ne marche pas. A moins d'avoir réglé register_globals à ON (ce qui n'est pas très protecteur).
Si on n'a pas accès au php.ini, on peut le faire fonctionner (php >=4.2.0) en ajoutant au début la ligne
Ensuite, l'idée de passer par GET dans un "protection.php" n'est pas fameuse.
voir http://blog.developpez.com/julienpau...p-self-et-xss/
Au lieu de :
Faire :
C'est moins tentant à attaquer.
$log="ton_login_ici"; // change ton login ici
$pwd="ton_pass_ici"; // change ton password ici
// *************************
$log=ereg_replace("\n", "", $log);
$pwd=ereg_replace("\n", "", $pwd);
if (strcmp($login, $log) != 0) { //$login est la variable du formulaire précédent
print "\n<center><b>Le login est incorrect</b><br><br><a href=\"protection.php\">RETOUR</a></center>";
exit; // on n'exécute pas la suite du si si le login est faut...
Pourquoi nettoyer $log et $pwd ? ereg_replace ne sert à rien, on vient de les coder en dur!
Je n'ai pas trop aimé l'excès de variables inutiles. "entreeludo" prend 3 valeurs, or seule $entreeludo=2 est utilisée...
Curieusement, en supprimant ces lignes, tout va bien...
Je propose donc à Ludovic une version amaigrie de son code :
Enfin, une question à Ludovic que mets-tu dans le fichier ".htaccess" de la zone protégée ?
A+
Merci à Ludovic pour son code.
Je n'ai pas trop aimé d'abord les fautes d'orthographe.
Ensuite, il ne marche pas. A moins d'avoir réglé register_globals à ON (ce qui n'est pas très protecteur).
Si on n'a pas accès au php.ini, on peut le faire fonctionner (php >=4.2.0) en ajoutant au début la ligne
Code : | Sélectionner tout |
extract($_REQUEST,EXTR_OVERWRITE);
voir http://blog.developpez.com/julienpau...p-self-et-xss/
Au lieu de :
<form method="post" action="<? print "$PHP_SELF?entreeludo=2"; ?>">
<form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
<input type='hidden' name='entreeludo' value='2'>
<input type='hidden' name='entreeludo' value='2'>
$log="ton_login_ici"; // change ton login ici
$pwd="ton_pass_ici"; // change ton password ici
// *************************
$log=ereg_replace("\n", "", $log);
$pwd=ereg_replace("\n", "", $pwd);
if (strcmp($login, $log) != 0) { //$login est la variable du formulaire précédent
print "\n<center><b>Le login est incorrect</b><br><br><a href=\"protection.php\">RETOUR</a></center>";
exit; // on n'exécute pas la suite du si si le login est faut...
Je n'ai pas trop aimé l'excès de variables inutiles. "entreeludo" prend 3 valeurs, or seule $entreeludo=2 est utilisée...
$entreeludo=3; // entreeludo prend la variable 3 (login et pass sont bon si on arrive là)
$go="okludo"; // la variable go prend la valeur "okludo" pour afficher la partie protégée.
}
if ($go == "okludo" { // Début de la page d'administration
$go="okludo"; // la variable go prend la valeur "okludo" pour afficher la partie protégée.
}
if ($go == "okludo" { // Début de la page d'administration
Je propose donc à Ludovic une version amaigrie de son code :
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <?php $login=$_POST['login']; $password=$_POST['password']; if(isset($login)) { // on arrive du formulaire $log="ton_login_ici"; // change ton login ici $pwd="ton_pass_ici"; // change ton password ici if ((strcmp($login, $log) != 0)||(strcmp($password, $pwd) != 0)) { // Ne facilitons pas la tâche aux malveillants - Le test est fait sur la paire login/password print "<html><body style=\"text-align:center\"><b>Vous n'êtes pas reconnu.</b><br />Vérifiez SVP.<br /><a href=\"". htmlentities($_SERVER['PHP_SELF'])."\">RETOUR</a></body></html>"; // petite page bien formée qui efface la paire login/password exit; } // Ou bien un header("Location: etc... ou bien : echo "<html><body><h1>TE VOILA DANS L'ESPACE ADMINISTRATION DE TON SITE.<br /><br />SEULES LES PERSONNES AYANT LE MOT DE PASSE ET LE LOGIN PEUVENT Y ENTRER.</h1>"; /* ATTENTION DANS LE CAS D'UNE UTILISATION D'UN FORMULAIRE AVEC ENVOI DE DONNEES DANS CETTE PARTIE, IL faut METTRE : <form method="post" ACTION='princip.php'> <input type='hidden' name='go' value='okludo'> <input type='hidden' name='entreeludo' value='3'> ...... // Mettre ici tout ton espace administration --> // Fin de la page d'administration */ } else { // la première connexion à la page ou sur un échec echo <<<EOF <html> <head> <title>ESPACE ADMINISTRATION - PAGE PROTEGEE</title> <style type="text/css"> td {font-family:"Verdana";font-size:12pt} body, .centre {text-align:center} </style> </head> <body> <br /><h2>Saisissez votre login et votre mot de passe</h2><br /> <form method="post" action=""> <table align=center> <tr><td>Login : </font></td> <td><input type="text" name="login" size=15></td></tr> <tr><td>Mot de passe : </font></td> <td><input type="password" name="password" size=15></td></tr> <tr><td class="centre" colspan="2"><input type="submit" name="enter" value="- OK -" style="cursor:hand;color:blue;font:bold;"></td></tr> </table><br /> </form> <br />Espace Administration protégé <br />Par Ludovic Giambiasi </body> </html> EOF; } ?> |
Enfin, une question à Ludovic que mets-tu dans le fichier ".htaccess" de la zone protégée ?
A+
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.