如何处理动态生成的页面的CSP

时间:2018-09-10 21:12:45

标签: javascript google-chrome-extension xss content-security-policy

我有一个Chrome扩展程序,由于目标页面上的CSP更改而开始出现问题。

该扩展程序具有内容脚本,该脚本使用window.open创建了一个新窗口-我们称之为报告窗口。该窗口包含一个动态生成的可下载报告。用户在目标页面上的活动会在报告窗口上生成内容-类似于活动日志,该活动日志将标题显示为anchor,并在单击anchor时切换显示详细信息{{1} },使其类似于下面的代码

<section>

使用类似于下面的代码将所需功能动态添加到文档中

<a href="javascript:toggleDisplay('detail-1')">Data #1</a>
<a href="javascript:toggleDisplay('detail-2')">Data #2</a>
<a href="javascript:toggleDisplay('detail-3')">Data #3</a>

在报告窗口中有很多这样的条目,它们不是立即生成的,而是响应用户的活动而生成的。

这一切都很好,很花哨。但是最近该网站对内联JavaScript代码实施了CSP限制。

let script = document.createElement('script');
script.text = code.join('\n');
doc.head.appendChild(script);

由于此,当用户单击Content-Security-Policy: script-src 'sha256-6gLjSWp3GRKZCUFvRalksdfkahsdfX5aGHtECD1wVRg=' 'unsafe-inline' ... 标签标题并在控制台上显示以下错误时,我的详细信息section无法打开

anchor

这就是我想知道的

  1. 是否可以在新创建的子窗口中放松或重置CSP?如果是,那怎么办?我知道元标记不能放松它,而只能限制它更多。
  2. 鉴于报告是动态生成的DOM,我如何才能遵守此新的CSP指令。另外,我需要此报告可下载,目前,我可以轻松地将文档的DOM下载到html中以提供报告。如果脚本必须放在单独的文档中,似乎我可能必须提供一份mht报告。鉴于这是chrome扩展名,我什至不确定如何在单独的文档中提供脚本

0 个答案:

没有答案