[英]how to prevent opening another tab in same browser session with php or javascript?
[英]Express session - Session lost after opening a link on another tab
背景:
我有一个 nodejs 应用程序使用 express-session 进行 session 管理。 最近我们对该应用进行了安全检查,并开始使用安全的 cookies。 这是快速会话配置:
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
}
})
})
);
问题:
问题从这里开始。 此 session 管理运行良好且稳定。 但是,如果我们通过邮件或 whatsapp web 或任何消息传递应用程序共享任何链接,并且任何人点击该链接。 他们将在那里松动 session ,换句话说,该人从应用程序中退出。
似乎浏览器没有与新打开的选项卡共享当前的 cookies 并生成一个新的 session。
以前有没有人遇到过这个问题,我们如何克服这个问题?
更新 1:似乎问题出在 WhatsApp web 上。 当我们通过 WhatsApp web 打开链接时,我们会丢失 session
发布此问题后 1 天,我设法解决了此问题。 我忘了分享。 该问题与 cookies SameSite
策略有关。
如果您对SameSite
strict
的价值。 如果您从另一个主机上的链接打开网页,则会导致 cookie 松动。
来自 MDN:
Cookies 将仅在第一方上下文中发送,不会与第三方网站发起的请求一起发送。
更多信息可以在这里找到: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.