Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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 :
[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
/* 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
/** * 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
/* 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
ils passent pas par un proxy ?
Hors ligne
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.
Hors ligne