2013-10-09 3 views
-1

J'ai fait des recherches pour trouver des informations sur la sécurité de session en PHP, j'ai trouvé des trucs sympas mais je ne suis toujours pas sûr que ce soit correct pour la protection de session contre les attaques courantes.Vérification de session sécurisée

public static function session_start() 
    { 
     ini_set('session.cookie_httponly', 1); 
     ini_set('session.session.use_only_cookies', 1); 
     ini_set('session.entropy_file', '/dev/urando'); 
     ini_set('session.cookie_lifetime', 0); 
     ini_set('session.cookie_secure', 1); 
     if(session_status() != 2) session_start(); 

     //fixation security step 
     if(!isset($_SESSION[self::$_CHECK_KEY]) || $_SESSION[self::$_CHECK_KEY] !== self::$_CHECK_VAL) 
     { 
      session_regenerate_id(); 
      $_SESSION[self::$_CHECK_KEY] = self::$_CHECK_VAL; 
     } 

     //Hijacking secuity step 
     if(isset($_SESSION[self::$_USER_AGENT])) 
     { 
      if(self::CryptPass(
        $_SERVER['HTTP_USER_AGENT'], 
        self::$_USER_SALT, 
        $_SESSION[self::$_USER_AGENT]) 
       !== $_SESSION[self::$_USER_AGENT]) 
      { 
       $this->ReqLogin = true; 
      } 
     } 
     else 
     { 
      $_SESSION[self::$_USER_AGENT] = self::CryptPass($_SERVER['HTTP_USER_AGENT'], self::$_USER_SALT); 
     } 
    } 

Donc, je veux savoir est-ce que je peux faire mieux? Il y a des choses que je ne devrais pas faire?

+0

regardez ici http://stackoverflow.com/questions/328/php-session-security –

Répondre

0

La sécurité est un sujet plutôt vaste - il y a beaucoup de choses que votre code n'aborde pas et vous n'avez pas défini les problèmes de sécurité à résoudre. Par exemple, cela ne sécurise pas la session contre d'autres utilisateurs sur une plateforme d'hébergement partagée. En laissant cela de côté pour l'instant, le problème évident est que le navigateur Chrome peut se mettre à jour en cours de session (c'est-à-dire que l'agent utilisateur change). Je n'ai vu cela qu'avec les navigateurs Chrome (et Chromium), et cela ne devrait jamais arriver plus d'une fois dans une session. Le suivi des modifications de l'adresse IP est une bonne idée - mais celles-ci peuvent également changer en cours de session, par ex. charge équilibrée entre plusieurs procurations. Mais il est rare que le fournisseur de réseau (dans les données whois pour l'adresse) change de session intermédiaire - cela peut toujours se produire, par ex. si un appareil mobile passe d'une zone avec seulement une connectivité 3G à un point d'accès Wifi.

Vous n'avez pas fourni de méthode explicite pour forcer un changement d'identifiant de session lorsque l'état d'authentification change. Bien que la fixation/piratage couvre la plupart des éventualités, c'est toujours une bonne idée de faire un changement explicite ici.

Questions connexes