我希望能够在低级别上使用会话。如何在node.js中生成会话ID?
不清楚您想要实现什么,但是会话ID只是一个ID!您可以以任何方式生成它。除了唯一性之外,没有任何要求。不过,将其设置为安全的是个好主意。例如,这个函数可以成为您的会话ID生成器:
var crypto = require('crypto');
var generate_key = function() {
// 16 bytes is likely to be more than enough,
// but you may tweak it to your needs
return crypto.randomBytes(16).toString('base64');
};
您调用generate_key()
并检查它是否存在于数据库中。如果存在,您会再次调用它,以此类推。
编辑:让我回应一下评论:
Math.random()
,有人担心它不具有加密安全性。虽然这是真的,但我没有看到OP要求加密安全的解决方案。我们不知道他在处理什么类型的会话,毕竟。最终,我决定进行更改,因为加密解决方案更安全,并且(大多数情况下)没有任何缺点。
Math.random
是从当前时间开始种子化,因此它是可预测的,攻击者可以使用它来预测用户的会话 ID。 - SilverlightFox