如何从document.execCommand("ClearAuthenticationCache")保护我的JSESSIONID?

Pyr*_*979 5 cookies session tomcat jsessionid

这可能与此问题重复,但建议的解决方案对我们来说不可行: 防止第三方调用者的document.execCommand("ClearAuthenticationCache")?清除我们的会话cookie

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

我们使用JSESSIONID以及另一个令牌来确保用户经过身份验证.JSESSIONID是安全的,httpOnly.这种方法很有效,除非JSESSIONID被第三方消灭.所以我的问题分为两部分:

  1. 有没有办法可以保护我的会话cookie(我们假设涉及客户端配置的任何内容,例如固定或注册表黑客攻击,是不可选的)?

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

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

谢谢大家.

hee*_*nee 1

我相信以下任一选项都可以保护 servlet 会话免受document.execCommand(\xe2\x80\x9cClearAuthenticationCache\xe2\x80\x9d)

\n\n

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

\n\n

您可以完全放弃 HTTP cookie 并配置 Tomcat 使用 SSL 会话 ID 进行会话跟踪。我自己从未实际配置过它,但我猜这比使用 JSESSIONID cookie 更安全。但是,在此配置中无法进行会话复制。

\n