Node.js passportjs上的会话劫持
我想知道如何使用passportjs防止会话劫持,目前,如果我将cookie复制并粘贴到另一个浏览器中,我就可以访问所有内容。会话劫持是一种攻击,在这种情况下,通过窃取会话cookie(或通常的会话ID)进行攻击。将cookie复制/粘贴到另一个客户端确实会窃取会话,这就是它应该如何工作的 防止会话劫持的要点是确保Cookie不会被中间人截获,实现这一点的最佳方法是使用HTTPS/SSL。Node.js passportjs上的会话劫持,node.js,express,passport.js,Node.js,Express,Passport.js,我想知道如何使用passportjs防止会话劫持,目前,如果我将cookie复制并粘贴到另一个浏览器中,我就可以访问所有内容。会话劫持是一种攻击,在这种情况下,通过窃取会话cookie(或通常的会话ID)进行攻击。将cookie复制/粘贴到另一个客户端确实会窃取会话,这就是它应该如何工作的 防止会话劫持的要点是确保Cookie不会被中间人截获,实现这一点的最佳方法是使用HTTPS/SSL。 此外,您应该刷新会话id(例如使用“session.regenate”):这使得攻击者很难在用户获得新会话
此外,您应该刷新会话id(例如使用“session.regenate”):这使得攻击者很难在用户获得新会话id之前窃取并使用该会话id 除了这些基本的事情,你几乎什么都做不了。保护cookie应该是客户端的任务,而不是应用程序的任务
顺便说一句,不要尝试将会话链接到用户IP,因为对于从多个IP连接的用户来说,这可能会令人沮丧(这在公司、大学等中很常见)。在我看来,唯一没有太多“副作用”的是将会话链接到浏览器的用户代理。虽然攻击者可以很容易地欺骗它,但它仍然提供了稍微多一点的保护——有总比没有好。会话劫持是一种攻击,在这种情况下,它通过窃取会话cookie(或通常的会话ID)来工作。将cookie复制/粘贴到另一个客户端确实会窃取会话,这就是它应该如何工作的 防止会话劫持的要点是确保Cookie不会被中间人截获,实现这一点的最佳方法是使用HTTPS/SSL。
此外,您应该刷新会话id(例如使用“session.regenate”):这使得攻击者很难在用户获得新会话id之前窃取并使用该会话id 除了这些基本的事情,你几乎什么都做不了。保护cookie应该是客户端的任务,而不是应用程序的任务
顺便说一句,不要尝试将会话链接到用户IP,因为对于从多个IP连接的用户来说,这可能会令人沮丧(这在公司、大学等中很常见)。在我看来,唯一没有太多“副作用”的是将会话链接到浏览器的用户代理。虽然攻击者可以很容易地欺骗它,但它仍然提供了稍微多一点的保护——有总比没有好。我不使用passport,但基本上有三种主要方法可以保护cookie不被劫持:
function validate(req, session) {
if (
getISP(req) !== session.isp ||
getSimplifiedUA(req) !== session.ua ||
// More tests...
)
return false
return true;
}
app.use(function(req, res, next) {
if( req.session && !validate(req, req.session) ) {
return req.session.regenerate(function(err) {
if ( err ) return next(err);
req.session.isp = getISP(req);
req.session.ua = getSimplifiedUA(req);
next();
});
}
next();
});
app.use('/', function(req, res, next) {
// Render something...
});
我不使用passport,但基本上有三种主要方法可以防止cookie被劫持:
function validate(req, session) {
if (
getISP(req) !== session.isp ||
getSimplifiedUA(req) !== session.ua ||
// More tests...
)
return false
return true;
}
app.use(function(req, res, next) {
if( req.session && !validate(req, req.session) ) {
return req.session.regenerate(function(err) {
if ( err ) return next(err);
req.session.isp = getISP(req);
req.session.ua = getSimplifiedUA(req);
next();
});
}
next();
});
app.use('/', function(req, res, next) {
// Render something...
});
欢迎来到堆栈溢出。请提供有关如何生成会话cookie的更多信息。谢谢Michal。我遵循了本教程,您的代码在哪里?你不能指望人们去阅读教程来回答你。抱歉,伙计:(这里是我的代码,我尝试创建一个会话。在返回完成之前重新生成(null,用户);但不起作用欢迎使用堆栈溢出。请提供有关如何生成会话cookie的更多信息。谢谢Michal。我遵循了本教程,您的代码在哪里?您不能期望人们阅读教程来回答您的问题。抱歉,男士:(这是我的代码,我尝试创建会话。在返回完成之前重新生成(null,用户)我知道最好的方法是使用HTTPS/SSL,如果我尝试将会话链接到IP也是一个坏主意,我未来的飞机将使用HTTPS/SLL,但现在我不能,我只想知道如何使用会话。用我的代码重新生成,我昨天尝试了一整天,但我失败了。顺便说一句,谢谢你的回答,祝你好运d日男子:D@A