为其他域的 iframe 创建内容
Create content for iframe of other domain
对于我们的论文,我们需要开发一个AdJail方法的原型,该方法提供了针对恶意广告的安全性。该方法通过将广告脚本放置在具有不同来源的 iframe 中的"影子页"中来隔离广告脚本。(受同源策略保护)通过将原始网页的内容复制到影子页,广告脚本只能访问发布商允许访问的内容。
问题在于为影子页面创建 iframe。最初,我们实现了这个:
if (document.createElement && (iframe = document.createElement('iframe'))) {
iframe.id = "shadowpage";
iframe.name = "shadowpage";
iframe.height = 1400;
iframe.width = 1400;
document.body.appendChild(iframe);
var shadowScript = document.createElement("script");
shadowScript.src = "ShadowTunnelScript.js";
iframe.contentDocument.body.appendChild(shadowScript);
adUrl = adScript;
}
显然,这并不能提供同源策略的请求安全性,因为此 iframe 与包含页面具有相同的源。
我们的替代方案如下,将 iframe 的 src 设置为具有不同来源的页面:
if (document.createElement && (iframe = document.createElement('iframe'))) {
iframe.id = "shadowpage";
iframe.name = "shadowpage";
iframe.height = 1400;
iframe.width = 1400;
iframe.src = "http://***/AdJail/Shadowpage.html";
//iframe.style.display = "none";
document.body.appendChild(iframe);
}
但在这种情况下,我们原型的用户需要自己在不同的服务器上创建一个影子页面。
我们的问题是:是否有可能创建这样一个具有不同来源的 iframe,动态生成此 iframe 的内容,以便用户只需要调用库而无需自己提供影子页面。
这是否可能通过首先生成 iframe 的内容,然后以某种方式更改 iframe 的起源?
您可以尝试将值设置为 document.domain 或将 iframe 内容设置为 datauri :
var content=window.btoa('<html>(..)<script>document.domain='sandbox';</script></html>');
iframe.src = "data:text/html;base64,"+content;
相关文章:
- 使用jQuery从原始页面内容创建iframe
- 动态(重新)创建iframe内容不会重置Chrome中的JS对象
- 如何创建iframe内容的书签
- 如何使用 jquery 动态创建 iframe HTML
- JavaScript 自动创建 iframe
- 是否可以在没有 Cookie 数据的情况下创建 iframe
- 创建 iframe 嵌入并使用模态
- 为什么固定它按钮会创建 iframe
- 使用JavaScript创建IFRAME的最佳实践是什么
- 如何在MVC中的运行时循环中动态创建IFrame
- 动态创建iframe的contentWindow未定义
- 为iframe获取对象null.使用jsdom和所需选项创建iframe
- 为什么<!DOCTYPE>停止javascript创建iFrame
- 两个Javascript无法创建两个iframe,只有最后一个Javascript创建iframe
- 从JQuery创建iframe -属性不工作,为什么不呢?
- 如何在GWT中创建iframe JAVASCRIPT到JAVA
- 动态创建iframe的onload事件在IE中永远不会触发
- javascript创建iframe-自动创建head和body标记
- 只使用javascript创建iframe
- 使用 reactJs 动态创建 iframe