【问题标题】:Google Chrome keeps session variables after browser close谷歌浏览器在浏览器关闭后保留会话变量
【发布时间】:2012-07-27 17:07:01
【问题描述】:

我正在使用 asp.net 表单版本 4 并使用内置的 FormsAuthentication。 我已选择不保留用户。

      FormsAuthentication.RedirectFromLoginPage(userIAmUsing, false);

当我在 IE 和 Firefox 中关闭浏览器时。我的会话变量被破坏,当我返回页面时被要求重新登录。但是,在我的 Chrome 设置中,我选中了“从上次中断的地方继续”设置。当我在 Chrome 中关闭浏览器时,它会根据我(开发人员)的意愿保留 cookie。事实上,即使在我退出我的机器之后,会话仍然存在。 在这种情况下,有没有人知道我作为开发人员可以做些什么来覆盖这种行为并且不允许会话在浏览器关闭后持续存在?换句话说,即使用户检查了该设置,我能否让 Chrome 的行为与其他浏览器完全一样?

【问题讨论】:

  • 今天为我提出了这个问题。我发现官方Chrome bug report 上的讨论非常有趣。你可以看到Google's official response 大约一半。显然,他们不会解决这个问题。作为开发人员,我认为我们的手被束缚了。

标签: asp.net security google-chrome session-state


【解决方案1】:

Cookie 和会话都有超时。您可以将超时设置为较短,以便 Chrome 在超时后不会尝试重复使用它们。

【讨论】:

  • 谢谢。这是我可以做的事情,但它打开了另一个蠕虫罐,因为我现在有一些不适用的人必须重新登录,因为我不得不将超时更改为很短的时间。我真的在寻找一种方法来设置一些东西,有点像 robots.txt 文件,告诉 Chrome 不要保留这些 cookie,以便每个人都按照相同的规则玩,而不是真正改变每个人的规则来玩谷歌。
  • .NET 会话具有滑动到期,这意味着只要用户处于活动状态,到期就会继续被推迟。当它们处于非活动状态时,它不会被推回,因此会在超时后过期。
  • 滑动过期并不能解决问题,只会降低问题的可能性。重点是我无法区分“用户 A 关闭浏览器,用户 B 1 分钟后打开”与“用户 A 等待 1 分钟直到下一次点击”。我用我们公司的网络邮件选择公共计算机尝试了这个,问题仍然存在。所以这会引发一个安全问题,有人可以使用公共计算机,单击设置,然后成为一个好人并将他们的计算机交给受害者。然后黑客可以收回计算机并获得受害者的所有信息。
  • 在这种情况下,除了培训您的用户或没有可公开访问的网站之外,我不知道您可以采取什么措施来保护这种情况。请注意,我不是安全专家,所以也许其他人会。
【解决方案2】:

没有浏览器特定的代码。您可以做的是,跟踪 IP 和浏览器,然后在请求详细信息发生更改时注销用户。

有用吗?

【讨论】:

  • 谢谢,这是我没有想到的,但它并不能解决我的噩梦。一名学生在学校填写了一份带有私人信息的申请,另一名学生几分钟后回来,并且能够访问他们的信息,因为该学生不记得退出,只是关闭了浏览器。如果谷歌像其他人一样玩,这不是问题,但因为它不是我的责任。而且我讨厌为了一个玩家而改变每个人,因为这让我感觉就像 IE6 一样。
  • 完美的理由。但是由于一些黑客,你设置了高安全性,你也会同意它会为此付出一些性能损失。只需尝试将其放入模块并拒绝请求即可。如果负载均衡器妨碍应用程序性能,您可以使用它。让我知道你的想法
【解决方案3】:

您唯一能做的就是手动尝试删除卸载处理程序中的 cookie;

$(window).unload(function () { /* delete session cookie */ } );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 2011-12-17
    • 2012-04-11
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多