我在使用以下 Content-Security-Policy HTTP 标头时尝试使用 TinyMCE:
X-WebKit-CSP: default-src 'self'; script-src 'self' 'unsafe-eval'; img-src *; media-src *; frame-src *; font-src *; style-src 'self' 'unsafe-inline'; report-uri /:reportcspviolation
我在工具 - JavaScript 控制台中收到以下错误:
Refused to execute JavaScript URL because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval'".
about:blank:1
Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval'".
test.xhtml:1
Refused to execute JavaScript URL because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval'".
about:blank:1
Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval'".
test.xhtml:1
但是,其中没有可执行的 JS 代码,test.xhtml
因为它仅使用外部<script>
来处理给定的 CSP 标头。对的引用about:blank
也同样无效。
任何想法如何找出违反 CSP 的原因在哪里?
Chrome 的内部 JS 调试器似乎无法识别来源。
此外,由于某种原因,Chrome 在工具 - 开发人员工具 - 网络中将 CSP 违规报告显示为“待处理”,但检查要发送的数据不会提供任何额外信息。例子:
{"csp-report":{"document-uri":"about:blank","referrer":"url-of/test.xhtml","violated-directive":"script-src 'self' 'unsafe-eval'","original-policy":"default-src 'self'; script-src 'self' 'unsafe-eval'; img-src *; media-src *; frame-src *; font-src *; style-src 'self' 'unsafe-inline'; report-uri /:reportcspviolation"}}
我能够弄清楚错误消息是关于onclick
在 TinyMCE 动态加载的一些 HTML 中使用 eg 属性,但是要查找什么文件?另一个错误可能是一段 TinyMCE HTML,其中一些href
具有以开头的值,javascript:
但如果没有来自 Chrome 的任何指针,也很难找到。整个设置适用于 Firefox 13(使用相应的 CSP 标头)。
有没有办法让 Chrome 为每个 CSP 违规抛出异常?