IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 36 fois
Vote des utilisateurs
0 
0 
Détails
Éditeur : Ludovic Giambiasi
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

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é.
Avatar de PapyWeb
Nouveau Candidat au Club https://www.developpez.com
Le 21/02/2011 à 6:01
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
Code : Sélectionner tout
extract($_REQUEST,EXTR_OVERWRITE);
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 :
<form method="post" action="<? print "$PHP_SELF?entreeludo=2"; ?>">
Faire :
<form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
<input type='hidden' name='entreeludo' value='2'>
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...
$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
Curieusement, en supprimant ces lignes, tout va bien...

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&eacute;g&eacute;
<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.