随机数与自定义数据。客户端是 nonce= 还是 nonce- ?也是客户端的nonce-xyz或'nonce-xyz'



我对内联脚本和CSS的nonce实现感到困惑。我在服务器上定义

res.locals.cspNonce = crypto.randomBytes(16).toString("hex"); 

scriptSrc:["自身",'nonce-${res.locals.cspNonce}']

注意到实际的nonce值本身并没有显示在客户端浏览器上(Brave(-尽管脚本仍在执行-所以不确定这是否只是浏览器级别的安全问题,因为当我将客户端内联nonce更改为像"abc"这样的硬编码时,脚本拒绝运行,这很好。我只是还不明白。是";nonce";只是一句标准的话?如果我决定了,我可以设置服务器端吗

scriptSrc: ["'self'", `'plackard=${res.locals.cspNonce}'`]

所以短语"nonce"实际上是无关紧要的,我刚刚创建了一个规则,即客户端所有脚本都必须匹配属性";plackard=$somerandomcharaters";?

最后,服务器端设置倾向于在"nonce=something"或noncesomething周围加单引号。为什么?我了解自定义数据属性的标准HTML5语法是:https://www.w3schools.com/tags/att_global_data.asp

data-custom="abc" 

不是

'data-custom="abc"'

额外的单引号似乎没有必要,甚至会混淆浏览器客户端?所以,在所有nonce周围加上额外的单引号,还是放弃它们?nonce是标准HTML5字段名="的一个例外吗;值";范型,因此需要单引号"fieldname=";值"还是不?

如果这是我的愿望,那么将我的"nonce"服务器端设置为要求我的脚本数据属性为会有任何问题吗

data-my-custom-safe-attribute="$insertRandomCryptographyHere"

,并注意到实际的nonce值本身没有显示在客户端浏览器(Brave(

检查内容安全策略HTTP标头,您的nonce值就在那里。

是";nonce";只是一句标准的话?如果我决定了,我能不能就这样服务器端脚本Src:["自身";,'plackard=${res.locals.cspNonce}']

nonce--«只能使用一次的数字»。此名称由CSP规范保留,如果您将使用任何其他名称,浏览器将忽略"plackard-base64value"令牌,abd脚本/样式将无法执行。

最后,服务器端设置倾向于在nonce=something或nonce something。为什么?

没有"OR">。单引号'nonce-base64value'仅在指令中使用:
script-src 'self' 'nonce-ABC' localhost http://example.com data:
所有关键字表达式(令牌(都是单引号,所有主机源和方案源-都不是。

nonce="ABC"用于HTML标签,并且它不单引号:

<script nonce="ABC">
var inline = 1;
</script>

强烈遵守HTML5 fieldname=";值";范式
请注意,在指令中,您使用"nonce-SomeValue"令牌,而在HTML标记中,您则使用nonce="SomeValue">属性。

最新更新