如何在node.js中生成会话ID?

ava*_*sin 6 session node.js

我想在低级别的会议上工作.如何在node.js中生成会话ID?

fre*_*ish 13

目前尚不清楚你想要实现的目标,但......会话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');
};
Run Code Online (Sandbox Code Playgroud)

您调用generate_key()并检查它是否存在于数据库中.如果它,你再次调用它,依此类推等等.

  • 不幸的是,除了诸如不可预测性和具有足够量的随机性之类的独特性之外还有其他要求.[您应该使用Node.js加密模块.`Math.Random`是从当前时间播种的](http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript)因此它是可预测的,攻击者可以用它来预测用户的会话ID. (7认同)
  • 除非基础库使用足够随机的源,否则UUID也不是可接受的会话ID。这并非总是如此。 (2认同)