2012-08-02 128 views
5

我在准备一些诊断工具。它在iframe的网站上运行 - 只能通过javascript。从客户端删除任何会话

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

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

现在对于achiving这个规则如下:

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

解决方法的任何想法?

+1

有趣的问题。 – 2012-08-08 14:37:24

+0

那么,谁在服务器上创建这些会话? – 2012-08-09 09:13:48

+0

我的诊断应用程序的用户通过iframe使用服务器.. – 2012-08-09 14:00:13

回答

2

你只是不能管理来自javascript的httpOnly cookies。

但我认为你要分析的页面,但也与js。那么为什么要使用iframe?

可以抓取页面的内容,从HTML或JavaScript之外分析:

  • 做Ajax请求您的应用程序代理
  • 使用HTML5 WebSockets的作为代理服务器。我假设websocket服务器是你的。 Websockets也具有跨域的能力。

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

+0

我需要为用户提供在页面上操作的可能性,比如在页面上执行操作...在iframe中执行操作..不仅仅分析它的内容... – 2012-08-09 13:51:50

+0

@ŁukaszW.pl你可以。做为普通代理(即hidemyass.com)。只需复制该内容并显示它。那是问题吗? – Zaffy 2012-08-09 15:30:50

+0

不正常的代理将页面上的所有链接转换为目标代理?它的方式来处理..在代码中的URL,URL在相关的脚本...很大的机会搞砸了东西,它必须是可靠的.. – 2012-08-09 15:37:57

1

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

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

Disable Cookies Inside A Frame/Iframe

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

+0

好的镜头,但沙箱似乎并没有在主机站点和iframe之间分开cookie ......它可以防止其他操作,但不是这一个.. – 2012-08-02 19:26:56

0

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

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

取决于你如何设置cookie的服务器端(即:“.example.com的”)的cookie将只能在www和根域设置

+0

但是,我会有同样的起源政策的问题,因为我需要用js修改iframe内容。此外,我并不担心在页面和iframe上使用相同的cookie ......我需要的是在一些js代码序列之间放置会话,以便在下一个序列之前有干净的cookie和会话... – 2012-08-04 18:37:18

+0

@ŁukaszW.pl我认为这是是很好的方法。想想......当'Cookie deletor'网站'将用户重定向时,您的iframe addr将会改变,您的来源和策略将会匹配。错过了我的东西? – Zaffy 2012-08-09 09:18:16

+0

然后你将从原始页面返回你的cookies。此外,我不能将子域添加到iframe中的应用程序..只是上传它的服务器上的一些文件,我不知道它会是什么.. – 2012-08-09 13:55:11

1

的JavaScript所以只是AJAX请求到服务器,并告诉它取消设置会话变量。

+0

正如我所说这将是诊断工具,现在我不知道什么应用程序将会进入iframe,所以我无法确定我应该做什么请求。更坏的消息是,我不知道它会是什么平台,所以我不能创建例如我自己的php脚本丢弃会话cookie。 – 2012-08-07 18:10:07

0

我想你需要某种服务器端代理来记录cookie头的值,然后根据请求中的值在稍后的阶段重置这个头值。

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

+0

我无法访问目标应用程序,所以我不能将HttpModule放入它。它也应该是跨平台的 - 我无法为每个Web服务器都写代理。 – 2012-08-08 15:23:17

+0

如何重定向到相关网站的代理? – 2012-08-10 10:09:51

+0

看看我在kewlashu回答中的评论。我不能冒险代理和正常使用网站之间的区别.. – 2012-08-10 13:21:25

2

据我了解 -

假设 - 你将不得不与它实现的用户登录/注销网站。

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

+0

多数民众赞成我的计划,如果我会放弃:( – 2012-08-09 15:42:43

+0

是的,这将是一个简单的没有废话的方法.....只是好奇你的理由有这种方法作为你的最后一个选择? – kewlashu 2012-08-09 15:52:59

+0

我想要使其尽可能通用(有时不存在简单的注销链接,或者有其他会话信息不能像这样被丢弃)。另外,我希望用户尽可能减少配置。 – 2012-08-09 18:31:29

-1

唯一的办法就是禁用Cookies

+0

Did你的事件看看我的帖子和其他答案的评论?就像我说我需要cookie,因为iframe中的页面应该正常工作,直到我想重置它们... – 2012-08-11 09:21:47