【问题标题】:How to protect my JSESSIONID from document.execCommand(“ClearAuthenticationCache”)?如何保护我的 JSESSIONID 免受 document.execCommand(“ClearAuthenticationCache”) 的影响?
【发布时间】:2015-10-26 06:43:17
【问题描述】:

这可能是这个问题的重复,但提出的解决方案对我们来说是不可行的: Protect against 3rd party callers of document.execCommand("ClearAuthenticationCache")? Clears our session cookies

长话短说:IE 有一种使用 JavaScript 清除会话 cookie 的方法 - document.execCommand(“ClearAuthenticationCache”)。这用于各种 Web 应用程序,包括 Outlook Web App(可能还有许多其他应用程序)。问题是 MS 在他们无限的智慧中决定这个命令应该清除所有打开站点的会话 cookie(你能说我有点苦吗,我花了几个月的时间才找到随机丢失的 JSESSIONID 的来源) .

我们使用 JSESSIONID 以及另一个令牌来确保用户经过身份验证。 JSESSIONID 是 securehttpOnly。这很好用,除非 JSESSIONID 被第三方清除。所以我的问题分为两部分:

  1. 有什么方法可以保护我的会话 cookie 不受此影响(让我们假设任何涉及客户端配置的事情,例如固定或注册表黑客,都是不可选择的)?

  2. 如果没有,我有办法安全地从中恢复吗?由于 JSESSIONID 是 httpOnly,浏览器应该无法读取它,但也许有一些我没有想到的东西。

如果相关:我们使用 Tomcat 7 作为我们的网络服务器。该应用是一个相当复杂的 SaaS 应用,安全性相当重要。

谢谢大家。

【问题讨论】:

    标签: session tomcat cookies jsessionid


    【解决方案1】:

    我相信以下任一选项都可以保护 servlet 会话免受 document.execCommand(“ClearAuthenticationCache”) 的影响:

    您可以在 web.xml 中 set the max-age of your JSESSIONID。这样您的 JSESSIONID cookie 将不再是会话 cookie!这会使您的 Web 应用程序的安全性稍微降低,因为 cookie 在浏览器关闭后仍然存在。

    您可以完全放弃 HTTP cookie 和 configure Tomcat to do session tracking with the SSL session ID。我自己从未真正配置过它,但我猜这比使用 JSESSIONID cookie 更安全。但是,在此配置中无法进行会话复制。

    【讨论】:

    • 非常感谢。第一个选项不可行,但第二个选项很可能解决我们的问题。我们有一个单独的安全设备处理 SSL,但它可以将标头中的 SSL ID 传递给 Tomcat,此时我们可以将其用作 JSESSIONID 标识的备份。
    猜你喜欢
    • 2018-07-24
    • 2010-10-01
    • 1970-01-01
    • 2014-04-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    相关资源
    最近更新 更多