Advertisement
Guest User

Page d'administration sécurisée

a guest
Jun 23rd, 2016
1,190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.66 KB | None | 0 0
  1. <?php
  2.  
  3. // On se facilite la vie
  4. $ip = $_SERVER["REMOTE_ADDR"];
  5.  
  6. // Fonction qui servira à signer nos cookie pour les protéger
  7. // Cette fonction génère 25 caractères aléatoires
  8. function signature()
  9. {
  10.   $arr = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  11.   $tmp = '';
  12.  
  13.   while(strlen($tmp)<25)
  14.   {
  15.     $tmp .= $arr[mt_rand(0,61)];
  16.   }
  17.  
  18.   return $tmp;
  19. }
  20.  
  21. // Ouverture de la session globale, utilisée comme espace mémoire
  22. session_id('BS1OYs7hjlW3rRvFfJ0m');
  23. session_start();
  24.  
  25. // 1. On vérifie si l'utilisateur aurait déjà un cookie d'administration valide
  26. if(isset($_COOKIE['ID_ADMIN'], $_SESSION[$ip.'ID_ADMIN']) && $_COOKIE['ID_ADMIN']===$_SESSION[$ip.'ID_ADMIN'])
  27. {
  28.   // Si oui, on inclut la page d'administration (un document HTML par exemple)
  29.   ?>
  30.   <!-- Insérer ici la page HTML de l'interface d'administration -->
  31.   <!DOCTYPE html>
  32.   <html lang="fr">
  33.   <head>
  34.     <meta charset="UTF-8">
  35.     <title>Interface d'administration</title>
  36.   </head>
  37.   <body>
  38.     INTERFACE D'ADMINISTRATION
  39.   </body>
  40.   </html>
  41.   <!-- Fin de la page HTML -->
  42.   <?php
  43.  
  44.   // On aurait pu aussi utiliser la fonction include pour simplifier le code :
  45.   // include '/www/pages/admin/admin_interface.php';
  46. }
  47.  
  48. // Sinon, on regarde si l'utilisateur a envoyé des données de connexion pour d'identifier
  49. // Il est important d'appliquer la condition is_string() sur $_POST['psw'],
  50. // parce que la fonction hash() n'admet que des chaines de caractère.
  51.  
  52. else if(isset($_POST['psw']) && is_string($_POST['psw']))
  53. {
  54.   // On vérifie que le mot de passe est correct avec un hash sécurisé
  55.   // Ici, le mot de passe est : maison
  56.   $hash = hash('sha256','#Hu5'.$_POST['psw'].'p2!B');
  57.   if($hash=='29a2d24eac52388d45ec150fb67cf161b028c5eb635677dfa61c152bb6c8a52b')
  58.   {
  59.     // Si oui, on signe un cookie...
  60.     $sign_cookie = signature();
  61.     setcookie('ID_ADMIN', $sign_cookie);
  62.  
  63.     // ... et on le stocke dans la session globale en le protégeant
  64.     // par l'adresse IP
  65.     $_SESSION[$ip.'ID_ADMIN'] = $sign_cookie;
  66.  
  67.     header('Location: admin.php'); exit;
  68.   }
  69.  
  70.   // Redirection en cas d'erreur : mot de passe incorrect
  71.   header('Location: admin.php?error');
  72. }
  73. else
  74. {
  75.   ?>
  76.   <!-- Intégrer ici une page HTML/PHP qui demande de s'authentifier avec un mot de passe -->
  77.   <!-- Pour simplifier, je ne donne que le formulaire code brut -->
  78.   <form action="admin.php" method="post">
  79.     <p>Mot de passe :</p>
  80.     <input type="password" name="psw" autofocus required maxlength="100">
  81.     <p>&nbsp;</p>
  82.     <input type="submit" value=" Valider ">
  83.   </form>
  84.   <?php
  85.   if(isset($_GET['error']))
  86.   {
  87.     echo 'Mot de passe incorrect';
  88.   }
  89. }
  90.  
  91. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement