想知道如何使用护照js防止会话劫持,目前如果我将cookie复制并粘贴到另一个浏览器中,我可以访问所有内容。
答案 0 :(得分:9)
会话劫持是一种攻击,在这种情况下,通过窃取会话cookie(或一般的会话ID)来工作。将cookie复制/粘贴到另一个客户端确实会窃取会话,这就是它应该如何工作。
防止会话劫持的目的是确保cookie不会被中间人拦截,实现此目的的最佳方法是使用HTTPS / SSL。 此外,您应该刷新会话ID(例如使用“session.regenerate”):这使得攻击者很难窃取会话ID并在用户获得新会话之前使用它。
除了这些基本的东西,你几乎什么也做不了。保护cookie应该是客户的任务,而不是您的应用程序。
顺便说一下,不要尝试将会话链接到用户IP,因为这对于从多个IP连接的用户来说是非常令人沮丧的(在公司,大学等中很常见)。在我看来,唯一没有很多“副作用”的是将会话链接到浏览器的用户代理。虽然攻击者可以很容易地欺骗它,但它仍然提供了更多的保护 - 有些东西比什么都好。
答案 1 :(得分:1)
我没有使用护照,但基本上有3种主要方法可以保护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...
});