将随机数内容安全策略标头用于内联样式元素的style-src返回错误

时间:2020-10-22 作者:Ryan

在内容安全策略头中使用nonce时,Google Chrome和Firefox都会返回错误。nonce值用于样式元素,即。<style id="some-id">// CSS </style>

例如Refused to apply inline style because it violates the following Content Security Policy directive: "default-src \'self\' \'nonce-random-value\'". Either the \'unsafe-inline\' keyword, a hash (\'sha256-specific-hash\'), or a nonce (\'nonce-...\') is required to enable inline execution.

nonce值也适用于脚本,例如//Javascript,其功能与预期一致。

这些文件的标题为:;

"style-src \'self\' https://fonts.googleapis.com \'nonce-".tu_custom_nonce_value () ."\';".
"script-src \'self\' https://maps.googleapis.com https://www.googletagmanager.com https://ajax.googleapis.com https://ajax.cloudflare.com https://static.cloudflareinsights.com https://cdnjs.cloudflare.com \'nonce-".tu_custom_nonce_value () ."\';";
根据Mozilla的文档-https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src, 为样式src指定nonce就足够了。

目前唯一的解决方法是为每个元素指定一个SHA256哈希值,因为每次更新WordPress时,更改都需要手动进行。

如有任何指导或帮助,将不胜感激。

1 个回复
最合适的回答,由SO网友:barryvanveen 整理而成

看起来你把nonce添加到了script-src 指令,但不符合style-src 指令。这可能就是为什么脚本可以工作而样式不能工作的原因。

可能的解决方案:

"style-src \'self\' https://fonts.googleapis.com \'nonce-".tu_custom_nonce_value () ."\';".
"script-src \'self\' https://maps.googleapis.com https://www.googletagmanager.com https://ajax.googleapis.com https://ajax.cloudflare.com https://static.cloudflareinsights.com https://cdnjs.cloudflare.com \'nonce-".tu_custom_nonce_value () ."\';";

相关推荐

WP_CREATE_NONCE在使用WP_LIST_TABLE时不进行验证

我创建了一个管理页面,在该页面中,我使用WP\\u list\\u Table显示MySQL表的列表。在这个表中,我需要能够在需要时删除记录。这就是我的问题所在。要删除记录,我设置了以下代码。class Genres_List extends WP_List_Table { [...] public static function delete_genre( $id ) { global $wpdb; $w