微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 在firefox中使用csp sha-256将内联脚本列入白名单

我无法通过校验和在Firefox中使用白名单(52.0.2,windows). Firefox根据caniuse支持内容安全策略版本2,因此应支持校验和.

当chrome阻止内联脚本时,它会将所需的sha-256打印到控制台.
将其添加到csp规则会成功将脚本列入白名单.
校验和也与计算的校验和相同
https://report-uri.io/home/hash

但是firefox拒绝接受它.

我注意到MDN文档中的示例使用base-16而不是base-64编码用于校验和.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src

但即使使用MDN示例,我也能得到相同的结果. (还有使用base-16编码的chrome拒绝).我尝试了以下几种变体:

<!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>

Content Security Policy: The page’s settings blocked the loading of a resource at self (“script-src ‘sha256-076c8f1ca6979ef156b510a121b69b6265011597557ca2971db5ad5a2743545f’”). Source: var inline = 1;.

解决方法

如果您更改哈希值,它将起作用,如下所示:
<!DOCTYPE html>
<html>
<head>
  <Meta charset="UTF-8">
  <Meta http-equiv="Content-Security-Policy"
        content="script-src 'sha256-B2yPHKaXnvFWtRChIbabYmUBFZdVfKKXHbWtWidDVF8='">
  <title>Hello CSP</title>
</head>
<body>
  <script type="text/javascript">var inline = 1;</script>
</body>
</html>

不确定为什么你会看到你描述的Chrome中的行为;当我在Chrome中测试问题中的示例时,它会阻止脚本并发出错误消息,说使用散列值sha256-B2yPHKaXnvFWtRChIbabYmUBFZdVfKKXHbWtWidDVF8 =.

当给定var inline = 1时,https://report-uri.io/home/hash输出相同的值.

原文地址:https://www.jb51.cc/js/157440.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐