HTML iframe覆盖document.write

时间:2016-09-09 22:20:03

标签: javascript html iframe overwrite content-security-policy

主要背景

  • 我通过代理
  • 在每个HTML页面中注入一个js脚本
  • 我的js代码是页面中第一个评估的脚本
  • 我可以使用代理
  • 修改页面
  • 我的目标是在执行之前为每个生成客户端的脚本添加动态属性
  • 写入功能
  • 外,所有功能覆盖都能正常工作
  • 页面可以使用写入功能静态或动态生成(或修改!) IFrame节点

代码

在我的注入脚本中有这个代码覆盖本机写入函数,检查内容,如果有脚本标记,它会添加一个属性并调用原始函数:

...
var TYPE_WRITE = "type_write";
var f_write = HTMLDocument.prototype.write;
HTMLDocument.prototype.write = function () {
    arguments = my_mitm_function(arguments, TYPE_WRITE);
    return f_write.apply(this, arguments);
};
...

问题

除非"写"在" IFrame" 中,这里有一个例子:

...
var myIFrame = document.createElement("iframe");
document.body.appendChild(myIFrame);
myIFrame = (myIFrame.contentWindow) ? myIFrame.contentWindow : (myIFrame.contentDocument.document) ? myIFrame.contentDocument.document : myIFrame.contentDocument;
myIFrame.document.open();
myIFrame.document.write("<script>alert('Msg from inside');<\/script>");
myIFrame.document.close();
...

我认为问题在于每个IFrame都有不同的文档

有没有办法挂钩每个&#34;写&#34;功能在每个&#34; IFrame&#34;上下文? 还是一种出行方式?

更多详情

  • 我需要添加&#34; nonce&#34;属性,因为页面的CSP策略不允许脚本,只有&#34; nonce&#34;属性。
  • 我已经测试了其他替代品,例如&#39; MutationObserver&#39;但是我的函数必须在CSP引擎评估之前添加属性。

0 个答案:

没有答案