防止mozilla会话恢复

时间:2012-07-11 13:00:01

标签: java session firefox session-state

Mozilla能够恢复我的Java EE银行应用程序的会话(崩溃,恢复会话选项)。

有没有办法阻止mozilla通过编写代码来恢复会话? 或者是否可以识别会话恢复中出现的请求并强制用户再次登录?

4 个答案:

答案 0 :(得分:2)

我正在研究同样的问题。

我认为让浏览器恢复旧会话通常是一个坏主意。 但是我尝试了几件事,例如设置缓存控件头,但这对我不起作用。

所以我确实考虑在脚本中修复它。

但是我看到了不同解决方案的不同问题。

1)在浏览器关闭时删除cookie - >问题:您应该使用javascript添加漏洞来执行此操作,因为http_only应设置为false

2)将cookie_lifetime从0(浏览器关闭时)设置为例如3600(1小时)。 - >问题:将此设置为高并且安全性丢失并将其设置为低将为用户提供“会话已过期”错误消息,这意味着他们必须再次登录。

3)添加具有过期日期的第二个cookie。如果cookie在那里一切都很好。 - >问题:(几乎)与2)相同这只有在设置cookie后才能改变过期日期时才有效。在这种情况下,用户应保持活动至少XX分钟,否则他将失去他的会话(对我来说似乎是对的)。

我自己会看一下后者。

所以在这种情况下我使用PHP(而不是Java),但我想总的想法是一样的:

//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();
}

这对我有用。所以希望你可以在Java中应用它

答案 1 :(得分:0)

如果您需要在浏览器崩溃后使页面无效,则应使用驱动缓存行为的HTTP标头:

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

微米。

答案 2 :(得分:0)

我不知道它是否会直接回答您的问题,但您可以关闭恢复之前的会话。以下链接中的详细信息来自mozilla。

http://support.mozilla.org/en-US/kb/restore-previous-session#w_configuring-session-restore

答案 3 :(得分:0)

看起来这种方式还不存在(截至2013年3月4日)。我们希望浏览器开发人员能够理解会话恢复会打开安全漏洞。