【问题标题】:Iframes and Same-Origin-Policy and reverse proxy hackiframes 和 Same-Origin-Policy 和反向代理 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 页面
这似乎会绕过同源策略,用户也不会更聪明。有什么我遗漏的吗?
【问题讨论】:
标签:
html
security
iframe
same-origin-policy
【解决方案1】:
是的,你缺少一些东西。
同源策略保护网站访问的客户端。
如果您将mydomain.com/othersite 设置为代理到site2.com,则浏览器不会将site2.com 的用户cookies 发送到您的站点mydomain.com。您将得到的只是您的网站在mydomain.com 上为该用户设置的cookie。也就是说,您要攻击的只是您与site2.com 的mydomain.com 会话,而不是与site2.com 的用户会话(因为您的反向代理实际上使mydomain.com 成为此连接的客户端)。
如果有办法规避同源策略,这必须是客户端的东西,才能让浏览器将 cookie 发送到您的域。
我意识到我在这里专注于 cookie,但是 cookie 是一个易于理解的概念,它是同源策略保护的客户端对象示例。您的方法将允许您操作 site2.com 的 DOM,但它不会在访问者访问 site2.com 的上下文中,而是在您自己访问 @987654332 的上下文中@ - 访问者访问的任何内容都无法更改,除非他们足够信任您的网站以直接登录代理版本 site2.com。