内容安全策略间歇性错误
Content Security Policy intermittent error
加载带有 CSP 的页面时出现间歇性错误
Firefox:“内容安全策略:页面的设置阻止了内联资源的加载(“script-src”)。来源:...”
Chrome "内容安全策略指令 'script-src' 的源列表包含无效源:''nonce-YVV3G@Kk3ex7GMz53NWHlwAAADs''。它将被忽略。
list:1 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self' 'nonce-YVV3G@Kk3ex7GMz53NWHlwAAADs' 'report-sample' ...”。启用内联执行需要 'unsafe-inline' 关键字、散列 ('sha256-bcuD/K2TDYJ65gRxOp1yB9QFYhNqCOvbD35Sa/Pn/es=') 或随机数 ('nonce-...')。"
我正在使用随机数。
我不认为我有任何不在随机数下的内联。
阿帕奇配置:
<IfModule mod_headers.c>
Header set Content-Security-Policy "report-to '...'; "
Header set Content-Security-Policy "report-uri '...'; "
Header set Content-Security-Policy "default-src 'self'; "
Header set Content-Security-Policy "base-uri 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "object-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "connect-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "worker-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "child-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "frame-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "form-action 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "manifest-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "media-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Referrer-Policy "no-referrer "
Header set Content-Security-Policy "style-src 'self' 'nonce-%{UNIQUE_ID}e' 'report-sample' ...; "
Header set Content-Security-Policy "img-src 'self' 'nonce-%{UNIQUE_ID}e' 'report-sample' ... ; "
Header set Content-Security-Policy "font-src 'self' 'nonce-%{UNIQUE_ID}e' 'report-sample' ...; "
Header set Content-Security-Policy "script-src 'self' 'nonce-%{UNIQUE_ID}e' 'report-sample' ...;"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains "
Header edit Set-Cookie ^(.*)$ ";Secure;SameSite=Strict"
Header always set Content-Security-Policy "upgrade-insecure-requests; "
Header always set Content-Security-Policy "frame-ancestors 'self'; "
Header always set Content-Security-Policy "form-action 'self'; "
Header set X-Content-Type-Options nosniff
Header set X-XSS-Protection "0 "
</IfModule>
并在页面中:
<script type="text/javascript" nonce="'.$_SERVER['UNIQUE_ID'].'">
结果为
<script type="text/javascript" nonce="YVV3G@Kk3ex7GMz53NWHlwAAADs">
谢谢
$_SERVER['UNIQUE_ID']
不适合nonce
:
它不会生成加密安全值。
生成的值可以包含对 'nonce-value'
无效的 @
字符 - 这就是错误具有间歇性行为的原因。
Apache 2 使用 mod_cspnonce 而不是 UNIQUE_ID。
加载带有 CSP 的页面时出现间歇性错误 Firefox:“内容安全策略:页面的设置阻止了内联资源的加载(“script-src”)。来源:...”
Chrome "内容安全策略指令 'script-src' 的源列表包含无效源:''nonce-YVV3G@Kk3ex7GMz53NWHlwAAADs''。它将被忽略。 list:1 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self' 'nonce-YVV3G@Kk3ex7GMz53NWHlwAAADs' 'report-sample' ...”。启用内联执行需要 'unsafe-inline' 关键字、散列 ('sha256-bcuD/K2TDYJ65gRxOp1yB9QFYhNqCOvbD35Sa/Pn/es=') 或随机数 ('nonce-...')。"
我正在使用随机数。 我不认为我有任何不在随机数下的内联。 阿帕奇配置:
<IfModule mod_headers.c>
Header set Content-Security-Policy "report-to '...'; "
Header set Content-Security-Policy "report-uri '...'; "
Header set Content-Security-Policy "default-src 'self'; "
Header set Content-Security-Policy "base-uri 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "object-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "connect-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "worker-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "child-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "frame-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "form-action 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "manifest-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Content-Security-Policy "media-src 'self' 'nonce-%{UNIQUE_ID}e'; "
Header set Referrer-Policy "no-referrer "
Header set Content-Security-Policy "style-src 'self' 'nonce-%{UNIQUE_ID}e' 'report-sample' ...; "
Header set Content-Security-Policy "img-src 'self' 'nonce-%{UNIQUE_ID}e' 'report-sample' ... ; "
Header set Content-Security-Policy "font-src 'self' 'nonce-%{UNIQUE_ID}e' 'report-sample' ...; "
Header set Content-Security-Policy "script-src 'self' 'nonce-%{UNIQUE_ID}e' 'report-sample' ...;"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains "
Header edit Set-Cookie ^(.*)$ ";Secure;SameSite=Strict"
Header always set Content-Security-Policy "upgrade-insecure-requests; "
Header always set Content-Security-Policy "frame-ancestors 'self'; "
Header always set Content-Security-Policy "form-action 'self'; "
Header set X-Content-Type-Options nosniff
Header set X-XSS-Protection "0 "
</IfModule>
并在页面中:
<script type="text/javascript" nonce="'.$_SERVER['UNIQUE_ID'].'">
结果为
<script type="text/javascript" nonce="YVV3G@Kk3ex7GMz53NWHlwAAADs">
谢谢
$_SERVER['UNIQUE_ID']
不适合nonce
:
它不会生成加密安全值。
生成的值可以包含对
'nonce-value'
无效的@
字符 - 这就是错误具有间歇性行为的原因。
Apache 2 使用 mod_cspnonce 而不是 UNIQUE_ID。