Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
J'utilise depuis ma lecture du bouquin de Julien Pauli sur Zend son plugin Session mais malheuresement le code executé dans la méthode dispatchLoopStartup permettant de vérifier qu'il n'y ai pas eu de vol de session ne fonctionne pas tout le temps.
Je m'explique, il arrive de temps à autre que le test :
if ($this->_session->clientBrowser != $this->_clientHeaders)
soit négatif alors qu'il n'y a eu aucun de vol de session.
Quelqu'un aurait'il une petite idée ?
la class complète :
class Sheraf_Controller_Plugin_Session extends Zend_Controller_Plugin_Abstract { /** * Session récupérée du registre * * @var Zend_Session_Namespace */ private $_session; /** * En-têtes du navigateur * * @var string */ private $_clientHeaders; /** * Constructeur */ public function __construct() { $this->_session = Zend_Registry::get('session'); $this->_clientHeaders = $_SERVER['HTTP_USER_AGENT']; if (array_key_exists('HTTP_ACCEPT', $_SERVER)) { $this->_clientHeaders .= $_SERVER['HTTP_ACCEPT']; } $this->_clientHeaders = md5($this->_clientHeaders); } /** * Hook à l'entrée dans la boucle de dispatching * Vérifie si il n'y a pas eu tentative de vol de la session * en comparant les en-têtes du navigateur * * @param $request Zend_Controller_Request_Abstract */ public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { if(Zend_Auth::getInstance()->hasIdentity()) { if ($this->_session->clientBrowser != $this->_clientHeaders) { Zend_Session::destroy(); $this->_response->setHttpResponseCode(403); $this->_response->clearBody(); $this->_response->sendResponse(); exit; } } } /** * Hook à la sortie de la boucle de dispatching. * * Mémorise l'Uri actuelle en vue de la réutiliser pour redirection * sur la page précédente. * * @return void */ public function dispatchLoopShutdown() { $this->_session->requestUri = $this->getRequest()->getRequestUri(); $this->_session->clientBrowser = $this->_clientHeaders; } }
Dernière modification par erehcab (28-06-2011 18:18:10)
Hors ligne
Méfie toi si tu utilise un outil tel que firebug qui modifie les entêtes de session à la volée, et te ferait perdre ta session
Hors ligne