5

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

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

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

现在实现这一点的规则如下:

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

任何解决方法的想法?

4

7 回答 7

2

您只是无法从 javascript 管理 httpOnly cookie。

但是我觉得你要分析页面,还要用js。那么为什么要使用 iframe 呢?

您可以从 html 或 javascript 之外获取要分析的页面内容:

  • 向您的应用程序代理发出 ajax 请求
  • 使用 html5 websockets 作为代理服务器。我假设 websocket 服务器是你的。Websockets 还具有跨域能力。

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

于 2012-08-09T09:37:26.570 回答
2

据我所理解 -

鉴于此 - 您将拥有一个网站,其中实现了用户登录/注销。

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

于 2012-08-09T15:33:00.440 回答
1

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

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

禁用框架/iframe 中的 Cookie

希望我正确理解您的问题。

于 2012-08-02T18:23:48.253 回答
1

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

于 2012-08-07T16:27:32.763 回答
0

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

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

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

于 2012-08-04T17:12:31.027 回答
0

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

这应该不会太难用任何语言编写,例如在 IIS / .net 框架上,它将是 IHttpModule 的实现。

于 2012-08-08T14:48:38.933 回答
-1

唯一的方法是禁用 Cookie

于 2012-08-11T06:06:36.977 回答