app.use(session({
secret: "testing credentials",
store: sessionStore,
resave: true,
saveUninitialized: true,
cookie : {
httpOnly: true,
//secure: true,
maxAge : 60 * 60 * 1000
}
}));
我正在新开发的网站上处理一些安全问题。在线完成一些研究后,如果设置了secure = true,那么它将更安全。然而, 如果设置为secure:true,则每次用户发送另一个请求时,会话内的信息都将丢失。有没有办法解决这个问题?如果cookie中没有包含“secure:true”,则会话将持续该maxAge。
答案 0 :(得分:1)
如果使用secure
标志设置了cookie,它将仅由浏览器通过https发送到服务器,而不是普通的http。这应该是生产环境的默认设置。
但是,在开发应用程序时,您可能在开发机器上使用纯http。如果在这种情况下将会话cookie设置为secure
(使用普通的http),服务器将永远不会收到它,并且您将在每个请求中遇到一个新的空会话。
因此,简而言之,如果您使用https(即在开发流程的后期阶段,并且肯定在生产阶段),您应该只将cookie设置为secure
。
另一方面,如果您设置maxAge
,Cookie将被保留,这不是会话Cookie的最佳做法。如果没有maxAge
,cookie将被保留,直到用户关闭浏览器并且通常不会持久存储到磁盘,这是会话cookie的正确行为。