Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-06-2011 17:26:20

erehcab
Membre
Date d'inscription: 17-11-2009
Messages: 63

Plugin Session

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 :

Code:

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 :

Code:

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

 

#2 04-10-2011 21:19:05

martinsupiot
Membre
Lieu: Nantes
Date d'inscription: 20-03-2007
Messages: 52
Site web

Re: Plugin Session

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages