2009-11-08 4 views
2

Je voudrais que les données de sessions soient cryptées comme dans suhosin, y a-t-il une bibliothèque qui fournit cela?cryptage de session php

Répondre

4

Vous pouvez facilement utiliser mcrypt ou un chiffrement AES personnalisé pour chiffrer les données de session. Le meilleur pari serait de créer une classe wrapper de session qui chiffre les variables lorsque vous les définissez. Pour la gestion des clés, vous pouvez créer une clé unique et la stocker dans un cookie, afin que seul l'utilisateur puisse déchiffrer ses propres données de session.

+0

Je pense qu'il est plus à la recherche dans de la solution de boîte .... – RageZ

+0

En fait, je fait ça avec des fonctions, mais tu m'amènes avec la classe wrapper de session ... merci, c'est exactement ce que je cherchais. – Paul

0

Il exampleimplementation Zend Framework ici: http://www.eschrade.com/page/encrypted-session-handler-4ce2fce4/

les fonctions importantes pour référence:

// $this->secredKey is stored in a cookie 
// $this->_iv is created at the start 
public function setEncrypted($key, $value) 
{ 
    $_SESSION[$key] = bin2hex(
     mcrypt_encrypt(
      MCRYPT_3DES, 
      $this->secretKey, 
      $value, 
      MCRYPT_MODE_CBC, 
      $this->_iv 
     ) 
    ); 
} 

public function getEncrypted($key) 
{ 
    if (isset($_SESSION[$key])) { 
     $decrypt = mcrypt_decrypt(
      MCRYPT_3DES, 
      $this->secretKey, 
      pack(
       'H*', 
       $_SESSION[$key] 
      ), 
      MCRYPT_MODE_CBC, 
      $this->_iv 
     ); 
     return rtrim($decrypt, "\0"); // remove null characters off of the end 
    } 
    return null; 
}