iframes 和 Same-Origin-Policy 和反向代理 hack

Posted

技术标签:

【中文标题】iframes 和 Same-Origin-Policy 和反向代理 hack【英文标题】:Iframes and Same-Origin-Policy and reverse proxy hack 【发布时间】:2015-03-29 00:47:19 【问题描述】:

我一直在阅读具有不同域的 iframe,然后是父文档,我有点困惑。

我了解,如果 iframe 与其父文档来自同一个域,则父文档可以访问 iframe 的文档。看来我可以通过以下 hack 来规避这个问题:

    我在mydomain.com 设置了一个网络服务器 我提供来自mydomain.com/index.html的原始页面 我在我的网络服务器上为mydomain.com/othersite -> site2.com 设置了一个代理 将<iframe src="mydomain.com/othersite"> 添加到mydomain.com/index 页面

这似乎会绕过同源策略,用户也不会更聪明。有什么我遗漏的吗?

【问题讨论】:

【参考方案1】:

是的,你缺少一些东西。

同源策略保护网站访问的客户端。

如果您将mydomain.com/othersite 设置为代理到site2.com,则浏览器不会将site2.com 的用户cookies 发送到您的站点mydomain.com。您将得到的只是您的网站在mydomain.com 上为该用户设置的cookie。也就是说,您要攻击的只是您与site2.commydomain.com 会话,而不是与site2.com 的用户会话(因为您的反向代理实际上使mydomain.com 成为此连接的客户端)。

如果有办法规避同源策略,这必须是客户端的东西,才能让浏览器将 cookie 发送到您的域。

我意识到我在这里专注于 cookie,但是 cookie 是一个易于理解的概念,它是同源策略保护的客户端对象示例。您的方法允许您操作 site2.com 的 DOM,但它不会在访问者访问 site2.com 的上下文中,而是在您自己访问 @987654332 的上下文中@ - 访问者访问的任何内容都无法更改,除非他们足够信任您的网站以直接登录代理版本 site2.com

【讨论】:

很好的答案。谢谢。

以上是关于iframes 和 Same-Origin-Policy 和反向代理 hack的主要内容,如果未能解决你的问题,请参考以下文章

HTML,VUE,嵌入iframe,实现iframe的100%高度和宽度,代码分享

iframe和框架的区别

在 iOS 和 Android 上的 iframe 中使用 jquery 打印 iframe

iframe 和下拉

怎么将iframe框设置自适应

对iframe的探究