Html 忽略样式属性上的内容安全策略nonce
我正在设置内容安全策略,一个供应商库(bootstap)正在设置内联样式以显示一个对话框,Edge/Chromium表示该更改已被拒绝 我的CSP标题(示例拆分为单独的行以便于阅读)是: 如您所见,我设置了Html 忽略样式属性上的内容安全策略nonce,html,security,bootstrap-4,content-security-policy,nonce,Html,Security,Bootstrap 4,Content Security Policy,Nonce,我正在设置内容安全策略,一个供应商库(bootstap)正在设置内联样式以显示一个对话框,Edge/Chromium表示该更改已被拒绝 我的CSP标题(示例拆分为单独的行以便于阅读)是: 如您所见,我设置了样式src attr,我的html如下所示: <div id="large-right-modal" class="modal fade show" tabindex="1" role="dialog" ar
样式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与正在修改的元素上的nonce相同。唯一有效的方法是将
不安全内联
添加到我试图避免的策略中。Nonce可用于非可伸缩元素。至少在CSP 2级中,这主要限于和。问题是,如果属性中有样式,请尝试移动到样式块或css文件。我认为这是可以接受的;您可以在标记上定义nonce,否则您将无法处理由JScript更改的样式,或者只能在几个特定位置使用内联样式,而无需仅使用catch-all“unsafe-inline”。JScript的句柄样式不包括setAttribute(“style”,…)
func。顺便说一句,bootstarp使用CSP安全的方式添加style='display:block;'代码>并通过sha256-TH1YO7Owtg52rPfkQs+Us6yN6exn7w99CdIBBm9BmMQ=
判断-它不是style='display:block;'代码>已被阻止。font-src
指令涵盖了@font-face
构造-它不是html元素,因此不能应用'nonce-value'
。style src attr
指令不支持'self'
和'nonce-value'
。
<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>