内容安全政策:href = javascript:?

问题描述 投票:0回答:1

我对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

sha256 content-security-policy
1个回答
0
投票

即使该代码的哈希是正确的,它仍可能无法在许多浏览器中使用。而是将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'是一个选项,但当然不是所希望的。

© www.soinside.com 2019 - 2024. All rights reserved.