2010-10-13 15 views
15

Per motivi di sicurezza dei dati e privacy voglio sapere perché Magento usa due cookie per una sessione di frontend.Perché Magento usa 2 cookie per sessione?

Tutto quello che so è che uno di questi viene impostato su Mage_Core_Model_Cookie::set(..) e l'altro su Zend_Session::expireSessionCookie(), ma ancora non riesco a capire a cosa servono.

Non riesco a pensare ad alcun motivo per cui uno avrebbe bisogno di un secondo cookie per lo stesso dominio.

+0

Si prega di lasciare un commento quando downvoting .. –

+0

Sì, sembra piuttosto strano di downvotare questa domanda senza commento. Sembrava una domanda abbastanza decente per me. –

+0

+1 buona domanda. – dmp

risposta

5

Sono stato in grado di risolvere questo problema invertendo l'ordine della chiamata session_start() e la dichiarazione che imposta il cookie in Mage_Core_Model_Session_Abstract_Varien::start(..). Queste due linee di apparire così:

$cookie->set(session_name(), $this->getSessionId()); 
session_start(); 

E 'ora crea solo un singolo cookie e non sembra avere alcun effetto collaterale.

BTW: L'altro cookie non è stato creato in Zend_Session come ho ipotizzato, ma invece entrambi provenivano da Mage_Core_Model_Session_Abstract_Varien::start(..).

+1

Soluzione piacevole, ma attenzione a modificare i file principali. Dovresti (almeno) creare una copia nella gerarchia di file 'app/code/local' piuttosto che modificare direttamente il core. Questo dovrebbe ridurre al minimo la rottura di aggiornamenti/patch. –

+0

Sì, hai ragione, infatti in realtà l'ho fatto in questo modo. Non mi piace dover hackerare i file core, ma in casi come questo credo che uno non abbia una possibilità. –

6

Ho intenzione di chiamare questo codice rudimentale. Varien fa molto affidamento su Zend Framework come supporto per Magento, quindi molte delle classi (Zend_Session per esempio) sono usate come classi genitore per implementazioni Magento.

Il cookie Varienet etichettato "frontend" viene assegnato ai nomi per la sezione del sito che si visita (ad esempio, si avrà un cookie "admin" separato se si accede tramite il back-end), mentre il cookie Zend sembra essere globale.

Inoltre, sono stato in grado di eliminare il cookie Zend senza apparenti effetti deleteri (la mia sessione di accesso e il carrello sono rimasti accessibili e il cookie non è stato immediatamente sostituito).

+1

Grazie! Ho appena provato ad eliminare anche il secondo cookie e sembra che non sia affatto necessario. Quindi potrei essere in grado di rimuovere completamente questo cookie senza effetti collaterali. –

2

Questo è interessante. Ho appena controllato un'installazione di Enterprise Edition e solo "PHPSESSIONID" è impostato, "frontend" e "admin" mancano anche se collegati a entrambi. Forse questo è qualcosa ancora attivamente sviluppato.

Problemi correlati