Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-01-2010 11:40:32

eMeRiKa
Membre
Lieu: Paris
Date d'inscription: 05-02-2009
Messages: 50
Site web

[Zend 1.9.2] Conflit de session entre membres

Bonjour,

J'ai un gros soucis lié aux sessions sur mon site, il arrive parfois qu'on se retrouve connecté à la place d'un autre membre. Cela arrive après un changement de page quand on est déjà logué.

Ce problème n'arrive pas systématiquement, mais des membres se plaignent régulièrement de ce problème.

J'ai configuré les sessions avec :

Code:

[dev]
use_cookies            = on
use_only_cookies        = on
use_trans_sid            = off
strict                   = off
remember_me_seconds = 0
cookie_lifetime              = 0
name                    = monsite_session
gc_divisor                = 1000
gc_maxlifetime            = 86400
gc_probability            = 1

[prod : dev]
cookie_domain               = .monsite.com
remember_me_seconds  = 0
cookie_lifetime               = 0
gc_divisor                 = 1000
gc_maxlifetime             = 3600
gc_probability             = 1

C'est appelé dans le bootstrap de la manière suivante

Code:

/* SESSION */
$config = new Zend_Config_Ini(APP_PATH.'/config/session.ini', APP_MODE);
Zend_Session::setOptions($config->toArray());
// Partage (et création ou restauration) de l'objet de session dans le registre
// Ce premier appel à  new Zend_Session_Namespace démarre la session PHP
Zend_Registry::set('session', $session = new Zend_Session_Namespace($config->name));

Dans mon controleur login appelé sur toutes les pages, j'ai dans le init

Code:

/**
     * Appelel à  la construction : instancie Zend Auth
     */
    public function init()
    {
        $this->_auth = Zend_Auth::getInstance();
        $this->view->auth = $this->_auth;
    }

et au moment du login après la vérification du login / mot de passe, j'enregistre en session de la manière suivante

Code:

            /* on récupère les données du membre et les stocke en session */
            $res = $dbAdapter->getResultRowObject(array('idmembre', 'pseudo', 'email', 'pays'));

            $userNamespace = new Zend_Session_Namespace('user');
            $userNamespace->idmembre = $res->idmembre;
            $userNamespace->pseudo = $res->pseudo;
            $userNamespace->email = $res->email;
            $userNamespace->pays = $res->pays;

Je ne comprends pas d'où peut venir le problème, est ce que ça pourrait avoir un lien avec les sous domaines et un conflit de session entre eux ?

Hors ligne

 

#2 07-01-2010 15:33:37

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Zend 1.9.2] Conflit de session entre membres

ils passent pas par un proxy ?

Hors ligne

 

#3 07-01-2010 18:23:50

eMeRiKa
Membre
Lieu: Paris
Date d'inscription: 05-02-2009
Messages: 50
Site web

Re: [Zend 1.9.2] Conflit de session entre membres

Non aucun proxy n'est utilisé.

Hors ligne

 

#4 28-01-2010 18:39:13

ubini
Membre
Lieu: gillarens/Suisse
Date d'inscription: 23-01-2008
Messages: 110
Site web

Re: [Zend 1.9.2] Conflit de session entre membres

Salut,

Tu devrais faire attention au vol de session avec ton application, c'est un problème commun malheureusement. Ne fais pas confiance ni à PHP ni au Zend_Framework qui ne sont là que pour t'aider.

Dans la doc ZF, ils conseillent de comparer l'adresse IP et les entêtes du navigateur pour éviter une attaque par force brut (un script qui tente tous les numéros de session possible jusqu'à en fixer une). Si ton application est critique, tu peux rajouter un numéro de séquence à respecter ou d'autres moyens du fruit de ton imagination.

Cela ne va pas résoudre ton souci actuel mais tu seras au moins sûr que les utilisateurs ne peuvent pas utiliser les données des autres.


http://www.easyswap.org - site d'échange de biens et de services conçu avec jQuery et Zend Framework
http://www.lambelet.net - mon blog perso et inutile

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