如何实现多个Content-Security-Policies和headers?

How to implement multiple Content-Security-Policies and headers?

我有一个电子邮件相关的应用程序,我想通过附件阻止 JavaScript 中的警报。例如,我实现了以下 CSP header:

Header Set Content-Security-Policy "script-src http://192.168.0.1/trusted/ 'unsafe-inline' 'unsafe-eval';" 

如果我通过应用程序发送 HTML 文档作为附件,则此政策会阻止来自外部来源的警报,但会执行 <script>alert(123)</script> 等代码.我无法更改代码并将所有 JavaScript 代码从 HTML 页面移动到另一个“.js”文件。这将是一个非常耗时的过程。 有什么办法可以解决这个问题吗?如果我实现多个 headers 就会导致冲突。

另外,我正在考虑使用别名来允许来自另一个 ip(例如 192.168.0.2/trusted/)的受信任代码,但这会有帮助吗?

您可以在 sandboxed iframe 中显示来自附件的 HTML。它具有以下优点:

  • 沙箱本身减少了附件中任何恶意代码的影响,
  • 您可以为 iframe URL 设置单独的 CSP header,它不会影响外部 HTML,您需要允许内联代码。