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输出相同的值.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...