防止document.execCommand(“ClearAuthenticationCache”)的第三方呼叫者?清除我们的会话cookie

时间:2014-08-26 01:17:39

标签: session-cookies

我们有一个J2EE应用程序(仅在 -cough - IE上运行),它使用JSESSIONID来管理客户端和服务器之间的会话状态。我们的一些客户使用客户端Javascript onload方法调用的第三方Web应用程序(https://mdoffice.sentara.com/):

 document.execCommand("ClearAuthenticationCache");

这会在浏览器中粉碎我们的JSESSIONID cookie,从而导致应用服务器将我们的IE客户端窗口的后续请求视为无效或超时会话,并且用户被踢出。我们的服务器是OAS / OC4J,但我怀疑这很重要:如果我在登录我的网上银行时点击上面的URL,就会出现同样的基本行为。

在尝试研究这个时,我发现大多数人都有兴趣在非IE浏览器中复制这种行为。我对如何防范感兴趣。我们验证了我们的会话cookie具有域范围,但上述命令似乎并不尊重这一点。我们有一个蹩脚的解决方法,我们使用 -noframemerging 参数启动IE。这很难看,并且最终弄乱了我们试图将客户端限制为单一登录的逻辑。

我在MSDN上找不到多少有用的东西,但是这篇文章(http://blogs.msdn.com/b/ieinternals/archive/2010/04/05/understanding-browser-session-lifetime.aspx)确实清楚地说明上面的命令“...清除会话cookie ... ALL 在当前会话中运行的网站“。

有没有人知道:

  1. 显然更可取:从ClearAuthenticationCache保护我们宝贵的会话cookie的方法?
  2. Vane hope:我们可能会告诉客户与第三方进行沟通,这是ClearAuthenticationCache的一种不那么激进的替代方案吗? (当然,他们必须与导致此问题的任何第三方进行此操作。目前只有一个。)
  3. 感谢您的帮助!

0 个答案:

没有答案