我正在构建一个有角度的应用程序,并且已经在apache虚拟主机中设置了CSP。我面临的问题之一是要加载我的脚本,手动将所有脚本列入白名单并不容易。最重要的是,该应用程序会在每次构建时生成内联脚本。
位于我的index.html中的以下代码生成随机随机数,并在我所有的脚本标签上设置属性。现在剩下的问题是如何将其传递给apache中的CSP标头。
<script>
// generate random string for nonce
var randomString = function(length) {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for(var i = 0; i < length; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
return text;
}
// set value to recommended 32
var rs = randomString(32);
// load all script tags and set nonce attribute
window.onload=function() {
var scripts = document.getElementsByTagName("script");
for (var i=0;i<scripts.length;i++) {
if (scripts[i].src) i,scripts[i].setAttribute("nonce", rs)
else i,scripts[i].setAttribute("nonce", rs);
}
}
</script>
任何帮助将不胜感激。