2012-07-11 2 views
2

Mozilla est capable de restaurer la session (en cas de panne, l'option de session de restauration) de mon application bancaire Java EE.Empêcher la restauration de la session mozilla

Est-il possible d'empêcher mozilla de restaurer la session en écrivant du code? Ou est-il possible d'identifier la demande qui arrive lors de la restauration de la session et de forcer l'utilisateur à se reconnecter?

Répondre

0

Si votre besoin est d'invalider la page après que le navigateur est écrasé, vous devez utiliser les en-têtes HTTP qui entraîne le comportement du cache:

<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="EXPIRES" CONTENT="0"> 

M.

+0

merci, mais même après avoir ajouté au-dessus des en-têtes le firefox est capable de restaurer la session après un plantage. – SunilGiri

0

On dirait une telle façon n'existe pas encore (au 4 mars 2013). Espérons que les développeurs de navigateurs comprendront que la restauration de session ouvre des failles de sécurité.

2

Je suis à la recherche du même problème.

Comme je pense que c'est généralement une mauvaise idée de laisser le navigateur restaurer une ancienne session. Cependant, j'ai essayé plusieurs choses, par exemple la configuration des en-têtes de contrôle de cache, mais cela ne fonctionnera pas pour moi. Donc, je pensais vraiment à corriger cela dans un script.

Cependant, je vois des problèmes différents avec des solutions différentes.

1) Supprimer le cookie sur le navigateur à proximité -> Problème: vous devriez le faire avec javascript ajouter la vulnérabilité depuis le http_only doit être défini sur false

2) Réglage cookie_lifetime de 0 (lorsque le navigateur se ferme) à par exemple 3600 (1 heure). -> Problème: si ce paramètre est défini et que la sécurité est perdue et que le paramètre est trop faible, les utilisateurs reçoivent un message d'erreur «Session expirée», ce qui signifie qu'ils doivent se reconnecter.

3) Ajout d'un second cookie avec une date d'expiration. Si le cookie est là, tout est OK. -> issue: est (presque) le même que 2) cela ne fonctionnerait que si vous pouviez modifier la date d'expiration après le réglage du cookie. Dans ce cas l'utilisateur doit rester actif pendant au moins XX minutes sinon il perdra sa session (me semble correct).

Je me pencherai moi-même sur le dernier.

Donc, dans ce cas, je suis en utilisant PHP (pas Java) mais je pense que l'idée générale est la même:

//create expiration cookie 
private function setExpireCookie(){ 

    //expire cookie: name, value, expiration in seconds, path, domain, https, http-only 
    setcookie("Test_Expire", "Expire", time()+3600, "/test", null, false, true); 
} 

//check if expiration cookie exits 
private function expireExists() { 

    return isset($_COOKIE['Test_Expire']); 

} 

//set the session check for expiration cookie 
private function getSession() { 

    //does the session cookie exists and the expiration cookie doesnt? 
    if (!$this->expireExists() && isset($_COOKIE['Test_Cookie'])) { 

     //to remove the cookie by setting the expiration time before now 
     setcookie("Test_Cookie", $_COOKIE['Test_Cookie'], time()-3600, "/test"); 
    } 

    //now we can set the new expiration cookies en start the new session 
    $this->setExpireCookie(); 

    //set cookie params: lifetime, path, domain, https, http-only 
    session_set_cookie_params(0, "/api", null, false, true); 

    session_name('Test_Cookie'); 

    //start session 
    session_start(); 
} 

Cela fonctionne avant moi. Donc, j'espère que vous pouvez appliquer cela en Java

+0

Hey! ;) il n'y avait aucune raison pour un vote vers le bas. J'ai créé un travail autour de :-) – BonifatiusK

+0

Merci pour l'édition, maintenant c'est défait. –

Questions connexes