<?php
header("Content-Security-Policy: default-src 'sha256-".base64_encode(hash('sha256', 'console.log("Hello world");', true))."'");
?>
<script>console.log("Hello world");</script>
但是我仍然在 Chrome 中收到:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default-src 'sha256-1DCfk1NYWuHM8DgTqlkOta97gzK+oBDDv4s7woGaPIY='”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-...”)或随机数(“nonce-...”)。另请注意,'script-src' 未明确设置,因此 'default-src' 用作后备。
我已经玩了一个多小时,但仍然无法生成与示例匹配的哈希,例如。
http://software-security.sans.org/downloads/appsec-2014-files/building-a-content-security-policy-csp-eric-johnson.pdf
声明<script>alert('Allowed to execute');</script>
(难以确定原始间距)的哈希值为sha256-MmM3YjgyNzI5MDc5NTA0ZTdiCWViZGExZDkxMDhlZWIw NDIwNzU2YWE5N2E4YWRjNWQ0ZmEyMDUyYjVkNjE0NTk=
这没有多大意义:最后一部分不是以 开头sha256-
,但至少第一个哈希是正确的长度。我得到sha256-nbFv/38jW7zf8mQirwFemFjDwp5CwIaorxe4Z3yycn0=
了哈希alert('Allowed to execute');
http://nmatatal.blogspot.com/2013/09/how-my-script-hash-poc-works.html
声明:
<script>console.log("Hello world");</script>
应该有一个 csp 的
script-src 'sha256-y/mJvKQC/3H1UwsYAtTR7Q=='
眼球,看起来太短了。
我究竟做错了什么?