<script src="/xx/xxxxxx/jquery-x.x.x.js" type="text/javascript" charset="utf-8" nonce="<%=nonce%>"></script>
<script src="/xx/xxxxxx/xxxxxx.js" type="text/javascript" charset="utf-8" nonce="<%=nonce%>"></script>
Chrome的结果:
当我尝试单击错误时,我在jQuery文件中看到两个错误(请注意,下面的两个错误不是我的代码,而是来自jquery.x.js)
现在,在不使用此CSP的情况下,我应该如何解决这两个问题?
不安全-内联
很多人都说上面的和不安全的-eval是不推荐这样使用的:https://barryvanveen.nl/blog/47-how-to-prevent-the-use-of-unsafe-inline-in-csp
发布于 2019-03-18 18:42:05
对于第一个错误:
在运行时插入的div
的innerHTML
包含一个具有style
属性的<a>
元素。这是您的CSP的violation,因为这个特定的标记没有nonce。
解决方案
对这个标记使用nonce是不明智的,因为它是在运行时插入的,并且nonce应该被添加到HTML服务器端。
我建议将CSS移到另一个文件中,并使用链接标签包含该文件
HTML:
<!-- Other html -->
<link href="./style.css" rel="stylesheet">
style.css
a#someId {
color: red;
float: left;
opacity: .55;
}
请注意,您的JS需要进行一些修改,因为创建的<a>
标记需要有一个CSS选择的id
属性
script.js
div.style.display = "none";
div.innerHTML = " <link/><table></table><a href='/a' id='someID' >a</a><input type='checkbox'/>"
对于第二个错误:
如果不知道脚本的内容,就不可能确定是什么导致了错误。请发布几行与创建脚本变量相关的代码。
然而,这可能是第一个类似的问题。
https://stackoverflow.com/questions/55215756
复制相似问题