我对Content Security Policy有问题。即,假设我们有一个网页,该网页包含指向上一页的链接:
<a href="javascript: history.back()">Go back</a>
此已启用CSP的网页的正确base64编码sha256值(用什么代替问号):
content-security-policy: default-src 'self';script-src 'self' 'sha256-?????????????????????'
此外,您能否解释一下该字符串应该被哈希处理才能使此链接正常工作。
我尝试对这些字符串进行哈希处理,但这些都不起作用:
javascript: history.back()
history.back()
history.back()
history.back();
那些哈希是:
BF08EsGjXCEpB2NSaxWjxefwEeXHp/4SIfKJzR86L2w
XdsDF8eybIkQDjXcJT7sL9D/RQ2g7gopra+KI3RpfSI
LdlORHyUW/rwezK0l13nW+IwcZmi78eWOCBjewMWRr4
4LVO1Pw1wTlISwjHnezUwkDpDGQAU3rae9Klkjx5qCw
P.S。如果您需要sha256生成器来创建答案,那么我正在使用此生成器,因此它可能会有所帮助:https://approsto.com/sha-generator
即使该代码的哈希是正确的,它仍可能无法在许多浏览器中使用。而是将JavaScript提取到单独的js文件中,然后在元素上添加事件监听器:
<a href="" id="cspFriendly">Go back</a>
<script src="csptest.js"></script>
然后添加一个javascript文件(在我的示例中为csptest.js)。如果将其托管在同一台服务器上,它将在script-src指令中被'self'源接受:
function goback(){
history.back();
}
document.getElementById("cspFriendly").addEventListener("click", goback);
向script-src添加'unsafe-inline'是一个选项,但当然不是所希望的。