绕过iframe跨域安全
bypassing iframe cross domain security
我正在尝试用iframe和javascript解决跨域安全问题。
我们有几个发行商网站,他们的网站上直接嵌入了我们的简单javascript文件(通过Amazon CloudFront提供)。该脚本在发布者网站上做了一些事情(修改DOM),以显示我们为每个发布者网站定位不同的静态广告。
当我们通过iframe(Google DFP)提供相同的脚本时,由于跨域安全性,它显然不起作用,因为iframe URL和发布者网站URL不相关。
现在,我们使用另一个广告服务器,以绕过它们,每个发布者都有一个HTML文件(因此每个pub的相对路径类似于/iframe buster.HTML),其中包含一些javascript,允许广告在iframe之外扩展。根据我的想法,我不明白它到底是干什么的:
- 通过iframe提供的广告创建了一个子帧,其中包含iframe buster的URL路径
- 新的iframe URL包含一个查询字符串变量(如广告标识符)
- iframeJS可以通过调用parent.parent或top来修改文档DOM
我不知道这是否可行,以前有人知道或尝试过这样的事情吗?
发布者网站上托管的脚本不需要(实际上不应该)破坏iframe。相反,此脚本的目的是在AD iframe(托管在DFP内部)和发布者页面之间建立一个通信通道。
这里的问题是-在运行时,pub页面上的脚本知道什么是DFP iframe url域,但由于跨域访问限制,通过cloudfront提供的脚本不知道什么是发布者页面url。
因此,发布者脚本可以设置postMessage处理程序来接收来自广告Iframe的消息。它可以做类似于这个的事情
function registerPostMessageHandler() {
// Listen to message from child window
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent,function(e) {
var key = e.message ? "message" : "data";
var data = e[key];
console.log("Message obtained from origin " + e.origin + ' data: ' + data);
//Insert an AD slot based on the message
},false);
}
AD iframe中的JS可以进行
parent.postMessage(/*where to create the AD slot*/);
注意:"通过iframe提供的广告创建了一个带有iframe buster URL路径的子帧"-这是不可能的,因为iframe不知道发布者域,也因为安全限制,它也不知道。
- 将敏感信息传递给iframe的安全方式
- 如何应对iframe安全问题
- 将消息从主 http 页面发送到 https iframe 时的安全注意事项
- 包含第三方 iFrame 的安全风险
- 防止 iframe 安全问题
- 在跨域中创建安全的iframe
- 要停止ClickJacking,哪一个更安全?突破iframe与X-Frame-Options拒绝或同源
- 绕过iframe跨域安全
- 黑客嵌入iFrame的安全风险
- 如何在iframe中显示不安全的内容
- QtWebEngine:“;不允许加载本地资源“;对于iframe,如何禁用web安全
- 书签&来自不同安全域的iFrame上的导航
- 在iframe中呈现安全内容
- 确定Iframe是否处于安全来源以允许“;强大的功能”;
- 清理用户提交的HTML,但保持安全嵌入的iframe
- 哪个更安全——iframe还是CORS——用于创建嵌入第三方网站的小部件
- 是“iframe沙盒”技术安全
- Facebook Iframe应用程序-提示安全内容,虽然我已经安装了SSL
- 使同一域iframe安全
- Chrome扩展中Iframe的不安全Javascript访问