使用 UUID v4 生成会话 ID 是不是安全?
Posted
技术标签:
【中文标题】使用 UUID v4 生成会话 ID 是不是安全?【英文标题】:Is it safe to use UUID v4 to generate session IDs?使用 UUID v4 生成会话 ID 是否安全? 【发布时间】:2021-10-16 22:04:30 【问题描述】:使用 UUID v4 生成会话 ID 是否安全?
生成两个 UUID v4 并将它们连接起来以获得更长的字符串是否可以更安全地用作 Web 应用程序的会话 ID?
【问题讨论】:
这能回答你的问题吗? How to make sessions unique for each user? - Node.js 【参考方案1】:一般来说,不会。虽然字符串本身足够长,但 UUID 规范不需要实现来生成加密随机的字符串。
特定实现可能使其更加随机,因此您使用的库可能足够好,但它不需要是有效的 UUID。因此,拥有有效的 UUID 并不能证明/保证它是从足够随机的来源生成的。
即使您的特定 UUID 库确实创建了密码学上无法猜测的字符串,但仍可能不希望使用它,因为它可能向未来的开发人员发出信号:“UUID 可以安全地用于机密”,因此以后可能会产生风险即使最初 UUID 是安全的。
我的建议是简单地使用crypto.randomBytes
【讨论】:
如果我将这些随机字节转换为十六进制与 base64 会有什么区别吗?到 hex 会比 base64 看起来更好,我猜它只是一种显示“样式”,它背后的数据在这两种情况下都是随机和独特的。 @daniels 您需要将其转换为 something。十六进制更长以上是关于使用 UUID v4 生成会话 ID 是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章
vue中使用唯一标识uuid——uuid.v1()-时间戳uuid.v4()-随机数
为啥 Camunda 生成数字流程实例 ID,而不是 UUID?