当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 举报,一经查实,本站将立刻删除。