我需要生成一个nonce(只生成一次的数字)来删除CSP规则'unsafe-inline'
和脚本的所有可信URL,从而提高CSP得分。
<script nonce="{{{nonce}}}" src="http://example.com/file.js">
我知道nonce必须是唯一的,其计算方法几乎不可能预测,它应该至少有128位(即16个字节),并以base64编码。因此,这对node.js
是正确的吗?
const crypto = require('crypto');
let nonce = crypto.randomBytes(16).toString('base64');
4条答案
按热度按时间wz3gfoph1#
只是为了确认这确实在NodeJS中对CSP随机数有效
pbgvytdp2#
我建议使用
uuid
:https://www.npmjs.com/package/uuid每个uuid正好是所需的16字节(128位),并且您的计算机被流星击中的概率比产生uuid碰撞的概率更高。
axr492tv3#
您可以使用内置的
crypto.randomUUID()
生成一个36个字符长的字符串(288位),该字符串对128位随机性进行编码如
crypto.randomUUID()
文档中所述:生成随机RFC 4122版本4 UUID。UUID是使用加密伪随机数生成器生成的。
mbzjlibv4#