快速会话-在另一个选项卡上打开链接后会话丢失



背景:

我有一个nodejs应用程序,使用express会话进行会话管理。最近,我们对该应用程序进行了安全检查,并开始使用安全cookie。以下是快速会话配置:

server.use(
session({
saveUninitialized: true,
rolling: true,
resave: true,
proxy: true,
secret: envConfig.sessionSecret,
cookie: {
maxAge: envConfig.sessionCookie.maxAge, 
httpOnly: envConfig.sessionCookie.httpOnly, // was false before security checkup
sameSite: true, // was false before security checkup
secure: envConfig.sessionCookie.secure // was false before security checkup
},
name: envConfig.sessionKey,
store: new MongoDBStore({
uri: envConfig.sessMongoDB.uri,
collection: envConfig.sessMongoDB.collection,
expires: envConfig.sessMongoDB.expires,
connectionOptions: {
useNewUrlParser: true,
useUnifiedTopology: true
}
})
})
);

问题:

问题从这里开始。此会话管理工作良好且稳定。但是,如果我们通过邮件、whatsapp网络或任何消息应用程序共享任何链接,并且有人点击了该链接。他们会在那里放松,换句话说,这个人会退出申请。

浏览器似乎没有与新打开的选项卡共享当前cookie,并生成了一个新会话

以前有人经历过这个问题吗?我们如何克服这个问题?

更新1:似乎问题出在WhatsApp网络上。当我们通过WhatsApp网页打开链接时,我们丢失了会话

我在发布这个问题一天后设法解决了这个问题。我忘了分享。该问题与CookieSameSite策略有关。

如果将strict值设置为SameSite。如果你从另一台主机上的链接打开网页,就会导致cookie丢失。

来自MDN:

Cookies仅在第一方上下文中发送,不会与第三方网站发起的请求一起发送。

可以在此处找到更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite

最新更新