从客户端删除任何会话

时间:2012-08-02 17:33:20

标签: javascript session cookies client-side httponly

我正在准备一些诊断工具。它在iframe的网站上运行 - 只能通过javascript运行。

现在我需要的是摆脱我在iframe中的网站中的会话cookie。我只需要在执行某些操作后退出。

不幸的是,我不能只是从javascript中删除会话cookie,因为它标有httpOnly标志。我没有找到任何方法在隐身模式下打开iframe。

现在实现这一目标的规则如下:

  • 我可以将任何文件添加到目标网站服务器
  • 我可以在网站域名上运行任何javascript
  • 我可以强制用户使用指定的浏览器(它不一定是跨浏览器的解决方案)
  • 我无法修改网站代码
  • 解决方案必须是服务器和编程语言无关的

有关解决方法的任何想法?

7 个答案:

答案 0 :(得分:2)

您无法通过javascript管理httpOnly Cookie。

但我认为您要分析页面,还要使用js。那么为什么要使用iframe?

您可以从html或javascript以外的地方获取要分析的网页内容:

  • 向您的应用程序代理执行ajax请求
  • 使用html5 websockets作为代理服务器。我认为websocket服务器是你的。 Websockets也具有跨域功能。

然后你需要解析获取的DOM(我看到内置的东西)。然后让分析开始。

答案 1 :(得分:2)

据我了解 -

鉴于此 - 您将拥有一个在其中实施用户登录/注销的网站。

因此,如果您可以让诊断应用程序将目标网站的注销URL 作为配置var或某些设置(通过在服务器中放置一些js或文件),那么这项工作可以很简单。只需让您的诊断应用程序在需要时加载该注销URL。

答案 2 :(得分:1)

如果您只想阻止在iframe中使用Cookie,则可以尝试使用沙箱属性。

似乎是一个非常相似的问题:

Disable Cookies Inside A Frame/Iframe

希望我能正确理解你的问题。

答案 3 :(得分:1)

拥有 JavaScript,因此只需向您的服务器发出AJAX请求,并告诉它取消设置会话变量。

答案 4 :(得分:0)

说IFrame引用url:example.com/iframe.html。

让它引用cookieless.example.com/iframe.html,并使用服务器端反向代理规则设置来获取该请求并将其指回example.com/iframe.html。

根据您设置cookies服务器的方式(即:'。example.com'),cookie只能在www和root-domain上设置

答案 5 :(得分:0)

我认为您需要某种服务器端代理来记录cookie标头值,然后根据请求中的值在稍后阶段重置此标头值。

在IIS / .net框架上编写任何语言都不会太难,例如它可能是IHttpModule的实现。

答案 6 :(得分:-1)

唯一的方法是禁用Cookie