【发布时间】:2017-08-23 20:22:27
【问题描述】:
我无法通过校验和获得白名单以在 Firefox(52.0.2,Windows)中工作。 Firefox根据caniuse支持内容安全策略版本2,所以应该支持校验和。
当 chrome 阻止内联脚本时,它会将所需的 sha-256 打印到控制台。 将其添加到 csp 规则成功地将脚本列入白名单。 校验和也与计算的相同 https://report-uri.io/home/hash
但火狐拒绝接受。
我注意到 MDN 文档中的示例使用 base-16 而不是 base-64 编码作为校验和。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
但即使使用 MDN 示例,我也得到了相同的结果。 (也 chrome 拒绝使用 base-16 编码)。我尝试了以下几种变体:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Security-Policy"
content="script-src 'sha256-076c8f1ca6979ef156b510a121b69b6265011597557ca2971db5ad5a2743545f'">
<title>Hello CSP</title>
</head>
<body>
<script type="text/javascript">var inline = 1;</script>
</body>
</html>
内容安全策略:页面的设置阻止了自身资源的加载(“script-src 'sha256-076c8f1ca6979ef156b510a121b69b6265011597557ca2971db5ad5a2743545f'”)。来源:var inline = 1;。
【问题讨论】:
-
规范要求base64编码哈希值:W3C: CSP - Hash Source Grammar:
hash-source = "'" hash-algorithm "-" base64-value "'"
标签: javascript firefox content-security-policy