【发布时间】:2021-05-25 04:21:01
【问题描述】:
我正在设置内容安全策略,供应商库(引导程序)正在设置内联样式以显示对话框,Edge/Chromium 表示更改已被拒绝。
我的 CSP 标头(示例拆分为单独的行以便于阅读)是:
default-src 'none';
script-src 'self' 'nonce-OGrJRYbkub0OVcGnjoCFDw/OF+bamLQddwgBEfu9HjE=';
style-src 'self' 'nonce-OGrJRYbkub0OVcGnjoCFDw/OF+bamLQddwgBEfu9HjE=';
style-src-attr 'self' 'nonce-OGrJRYbkub0OVcGnjoCFDw/OF+bamLQddwgBEfu9HjE=';
img-src 'self' https://www.gravatar.com;
font-src 'self' 'nonce-OGrJRYbkub0OVcGnjoCFDw/OF+bamLQddwgBEfu9HjE=';
connect-src 'self';
prefetch-src 'self';
form-action 'self';
manifest-src 'self';
upgrade-insecure-requests; block-all-mixed-content; report-to default;
如您所见,我设置了style-src-attr,我的html如下:
<div id="large-right-modal" class="modal fade show" tabindex="1" role="dialog" aria-labelledby="large-right-modal-label" nonce="OGrJRYbkub0OVcGnjoCFDw/OF+bamLQddwgBEfu9HjE=" aria-modal="true">
</div>
当我显示这个引导模式时,库添加了内联样式style="display: block;",浏览器给了我错误:
拒绝应用内联样式,因为它违反了以下内容安全策略指令:“style-src-attr 'self' 'nonce-OGrJRYbkub0OVcGnjoCFDw/OF+bamLQddwgBEfu9HjE='”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-TH1YO7Owtg52rPfkQs+Us6yN6exn7w99CdIBBm9BmMQ=”)或随机数(“nonce-...”)。
这没什么意义,nonce 和被修改元素上的nonce 是一样的。唯一可行的方法是将unsafe-inline 添加到我试图避免的策略中。
【问题讨论】:
标签: html security bootstrap-4 content-security-policy nonce