1
我正在使用connect-mysql-session將會話存儲在數據庫中。現在我的問題是我如何添加包含瀏覽器代理和IP地址的用戶數據來檢查會話是否有效?我如何獲得這些信息?我如何檢查它是否匹配?Nodejs Expressjs會話IP和瀏覽器代理匹配
users.login(credentials,function(err, results) {
//On errors
if (err) {
res.render(routes.index, {
title: 'Login'
});
//On success
} else if (results[0]) {
//Set session data and redirect to start page
req.session.userdata = results[0];
req.session.userdata.email = req.body.email_login;
req.session.is_logged_in = true;
res.redirect('/start');
//Wrong credentials
} else {
req.flash('warning','Wrong password or login');
res.render('index', {
title: 'Login'
});
}
});
更新:
我現在得到這個添加到會話:
req.session.ip = req.connection.remoteAddress;
req.session.useragent = req.headers['user-agent'];
,並在我的AUTH中間件檢查它:
if(req.session.userdata && req.session.is_logged_in === true && req.session.ip === req.connection.remoteAddress && req.session.useragent === req.headers['user-agent']) {
next();
} else {
res.redirect('/');
}
這是安全的或者你看到這有什麼風險?我應該以另一種方式去解決嗎?
你是對的無限循環。我編輯了代碼,粘貼問題。 你有什麼建議可以使這個更安全的劫持方面。正如你所說這是非常基本的,但我真的不知道我還有什麼要保護?任何提示或提示表示讚賞。謝謝 – georgesamper
頁面通過https傳輸。 – georgesamper
通過HTTPS傳輸頁面,您絕對可以輕鬆前往,而且您對此有很強的保護。這絕對是缺少的信息。我會做的唯一的額外建議是在會話cookie中設置'secure'標誌,所以它只能通過HTTPS連接傳輸。這將防止用戶錯誤地請求非安全頁面清楚地公開會話cookie。 – Pierre