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

前端之家收集整理的这篇文章主要介绍了javascript – 在firefox中使用csp sha-256将内联脚本列入白名单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法通过校验和在Firefox中使用白名单(52.0.2,windows). Firefox根据caniuse支持内容安全策略版本2,因此应支持校验和.

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

但是firefox拒绝接受它.

我注意到MDN文档中的示例使用base-16而不是base-64编码用于校验和.@H_404_3@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输出相同的值.

猜你在找的JavaScript相关文章