Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1423 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  votre avis sur la sécurité de ce script...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

votre avis sur la sécurité de ce script...

n°1684778
lilougirl8
Posté le 11-02-2008 à 11:31:36  profilanswer
 

Bonjour,

 

Pourriez vous me dire ce que vous pensez de la sécurité de ce script que j'ai créer qui permet de se loguer et protéger mes pages.

 

Le script de connexion

Code :
  1. <?php
  2. session_start();
  3. $_SESSION['logged'] = 0;
  4. include("".$_SERVER['DOCUMENT_ROOT']."/script_php/fonctions_php/fonction_racine.php" );
  5. if(!empty($_POST['login']) && (!empty($_POST['mdp']))) { 
  6. require("".$racine."/securite/sql/connexion_sql.class.php" );
  7. /*================ CONNEXION A LA BDD =============== */
  8. $connexion = new connexion_sql();
  9. $connexion = $connexion->connexion_PDO();
  10. /*=======================================================*/
  11. $login = trim($_POST['login']);
  12. $pass =  mhash(MHASH_SHA256, trim($_POST['mdp']));
  13. $page_precedente = $_POST['page_precedente'];
  14. $requete_prepare_log = $connexion->prepare("SELECT login, pass, droit FROM admin_membres WHERE login = :login" );
  15. $requete_prepare_log->execute(array(':login', => $login));
  16. if($utilisateur = $requete_prepare_log->fetch(PDO::FETCH_OBJ)) {
  17.   if($pass == $utilisateur->pass) {
  18.    $_SESSION['user'] = $utilisateur;
  19.    $_SESSION['ip_client'] = $_SERVER['REMOTE_ADDR'];
  20.    $_SESSION['HTTP_USER_AGENT'] = mhash(MHASH_SHA256, $_SERVER['HTTP_USER_AGENT']);
  21.    $_SESSION['logged'] = 1;
  22.    $_SESSION['iniated'] = true;
  23.    $requete_prepare_log->closeCursor();
  24.    header("Location:".$page_precedente."" );
  25.    die();
  26.   }
  27.   else {
  28.    $requete_prepare_log->closeCursor();
  29.    header("Location:".$racine_relatif."/admin/login.php?erreur=1" );
  30.    die();
  31.   }
  32. }
  33. else {
  34.  $requete_prepare_log->closeCursor();
  35.  header("Location:".$racine_relatif."/admin/login.php?erreur=1" );
  36.  die();
  37. }
  38. }
  39. else {
  40. header("Location:".$racine_relatif."/admin/login.php?erreur=2" );
  41. die();
  42. }
  43. ?>
 

La fonction a mettre en debut de chaque page

Code :
  1. function page_securite() {
  2. ini_set('session.use_trans_sid', 0);
  3. session_start();
  4. if (!isset($_SESSION['initiated'])) {
  5.     session_regenerate_id();
  6.     $_SESSION['initiated'] = true;
  7. }
  8. if(isset($_SESSION['logged'])) {
  9.  if($_SESSION['logged'] == 1) {
  10.   if(isset($_SESSION['ip_client']) && ($_SESSION['ip_client'] == $_SERVER['REMOTE_ADDR'])) {
  11.    if (isset($_SESSION['HTTP_USER_AGENT'])) {
  12.        if ($_SESSION['HTTP_USER_AGENT'] == mhash(MHASH_SHA256, $_SERVER['HTTP_USER_AGENT'])) {
  13.      if(isset($_SESSION['user'])) {
  14.       return true;
  15.      }
  16.     }
  17.    }
  18.   }
  19.  }
  20. }
  21. return false;
  22. }
 

Sur chaques pages

Code :
  1. if(!page_securite()) {
  2. header(Page d'erreur);
  3. die();
  4. }
  5. else {
  6. On affiche la page
  7. }
 


Je vais ajouter en plus de cela une gestion avec cookies qui me permettre de me souvenir de l'utilisateur.

 

Merci d'avance pour vos avis et critiques


Message édité par lilougirl8 le 11-02-2008 à 11:32:13
mood
Publicité
Posté le 11-02-2008 à 11:31:36  profilanswer
 

n°1684800
yellu
Posté le 11-02-2008 à 12:31:54  profilanswer
 

Sans juger la synthaxe et l'ergonomie du code, je trouve que la volonté de consolider la SESSION PHP via l'ip et user-agent est une bonne chose. :)

n°1684805
lilougirl8
Posté le 11-02-2008 à 12:41:14  profilanswer
 

merci c'est sympa, je compte rajouter un compteur d'attaque en cas de mauvais mot de passe.
 
Par contre, je veux mettre un en place un système de cookie comme indiqué plus haut, comment ça se passe concrètement quand je créer le cookie?
 
Voila ce que je pensai faire :  
 
Lorsque l'utilisateur se connect et que tout c'est bien passé : je créer le cookie login, le cookiee mot de passe,  
 
- Quand l'utilisateur revien sur la page, si le cookie login et pass existe, je vérifie qu'il soit valide (en faisant une requete) et je le connecte automatiquement.
 
C'est ça qu'il faut faire?? j'ai l'impression que il faudrait peut etre augmenter la sécurité à ce niveau la

n°1684806
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 11-02-2008 à 12:41:31  profilanswer
 

pas forcément ... L'UA est facilement modifiable et l'IP peut être masquée ... Donc imo, cela apporte certes un plus mais qui n'est pas synonyme de palier de sécurité.
 
D'autre part, perso je ne vois pas l'intérêt de faire un SELECT pour rapatrier le mot de passe : il vaut mieux imo le laisser dans la BDD (d'autant plus qu'à en lire le script, il n'a pas l'air d'être vérifié à l'heure actuelle)


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1684809
lilougirl8
Posté le 11-02-2008 à 12:49:55  profilanswer
 

Voilà j'ai rectifier c'est bien ça que tu ma conseillé??

 
Code :
  1. $requete_prepare_log = $connexion->prepare("SELECT login, droit FROM membres WHERE login = :login AND pass = :pass" );
  2. $requete_prepare_log->execute(array(':login' => $login, ':pass' => $pass));
  3. if($utilisateur = $requete_prepare_log->fetch(PDO::FETCH_OBJ)) {
  4.   $requete_prepare_log->closeCursor(); //On ferme le curseur
  5.    $_SESSION['user'] = $utilisateur;
  6.    $_SESSION['ip_client'] = $_SERVER['REMOTE_ADDR'];
  7.    $_SESSION['HTTP_USER_AGENT'] = mhash(MHASH_SHA256, $_SERVER['HTTP_USER_AGENT']);
  8.    $_SESSION['logged'] = 1;
  9.    $_SESSION['iniated'] = true;
  10.    $duree_cookie = time() + 31536000; // valable un an    
  11.    setcookie(); //Cookie Login
  12.    setcookie(); // Cookie Mot de passe
  13.    header("Location:".$page_precedente."" );
  14.    die();
  15. }
  16. else {
  17.  $requete_prepare_log->closeCursor();
  18.  header("Location:".$racine_relatif."/admin/login.php?erreur=1" );
  19.  die();
  20. }
  21. }
  22. else {
  23. header("Location:".$racine_relatif."/admin/login.php?erreur=2" );
  24. die();
  25. }
  

EDIT : MERCI NazzTazz, erreur Corrigée


Message édité par lilougirl8 le 11-02-2008 à 13:01:24

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  votre avis sur la sécurité de ce script...

 

Sujets relatifs
Script bashexecuter script
Modifier un script de compte a rebourCopie de sécurité
Cherche un script pour afficher un fichier csvFaille de sécurité HTML
Mon site, votre avis?htaccess/htpasswd => sécurité fiable?
Script Outlookya t-il un remède à l'erreur 405 pour script CGI ?
Plus de sujets relatifs à : votre avis sur la sécurité de ce script...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR