如何使用客户端会话

时间:2017-05-29 00:12:08

标签: javascript node.js session login

我正在使用此程序包进行用户会话:https://www.npmjs.com/package/client-sessions

登录很顺利,但我不确定我是否正在检查我的用户是否正确且安全地登录。我认为会话是加密的,但似乎只是检查if(req.session && req.session.user)是不够安全的。这是检查用户是否已登录的正确方法吗?要明确的是,用户在我指示的30分钟后就已登录并被踢出,但我不是一个黑客,我不希望人们只修改他们的cookie以进入其他用户的帐户。 / p>

var session = require('client-sessions');

app.use(session({
    cookieName: 'session',
    secret: config.secret,
    duration: 30 * 60 * 1000,
    activeDuration: 5 * 60 * 1000
}));

router.get('/', function(req, res, next) {
if(req.session && req.session.user)
    return res.redirect('amazingpage');
else
    res.render('index');
});

1 个答案:

答案 0 :(得分:0)

就像你说的,只是检查用户提供的数据是不安全的。

通常,服务器会在会话中保存此类信息,并通过SSL隧道发送具有唯一(和随机)ID的Session Cookie。如果用户提供不同的ID,则极有可能不存在,因此不会造成任何伤害。 SSL隧道在这里非常重要,因此“中间人”#34;无法读取ID并将会话声称为自己的会话。请参阅Session Hijacking

如果您不想在服务器上存储任何更多信息而不是绝对必要,您还可以使用服务器只知道的密钥加密此数据,并将密码存储在客户端上,就像防止SYN泛滥一样。见SYN cookies。请务必使用密码模式,以防止用户在采取此方法时修改cookie。 (通常使用CBC