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.com
的mydomain.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%高度和宽度,代码分享