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。
如果使用
secure
标志设置 cookie,则浏览器只会通过 https 而不是纯 http 发送到服务器。这应该是生产环境的默认设置。
但是,在开发应用程序时,您可能在开发计算机上使用纯 http。如果您在这种情况下将会话 cookie 设置为
secure
(使用纯 http),服务器将永远不会收到它,并且您将在每个请求中体验到一个新的空会话。
简而言之,如果您使用 https(即,在开发流程的后期阶段,并且绝对是在生产中),则应该仅将 cookie 设置为
secure
。
另一方面,如果您设置
maxAge
,cookie 将被保留,这不是会话 cookie 的最佳实践。如果没有 maxAge
,Cookie 将保留到用户关闭浏览器为止,并且通常不会持久保存到磁盘,这是会话 Cookie 的正确行为。
对于发展:
cookie: {
httpOnly: true
}
用于生产:
cookie: {
secure: true
}
如果使用
secure
标志设置 cookie,则浏览器只会通过 https
将其发送到服务器,而不是普通的 http
。这应该适用于生产环境。
但是,在开发应用程序时,您将使用普通的
http
。如果您在这种情况下将会话 cookie 设置为安全(使用纯 http),服务器将永远不会收到它,并且您将在每个请求中体验到一个新的空会话。
简而言之,如果您使用 https,则应仅将 cookie 设置为安全;如果您使用 http,则应仅将 cookie 设置为安全。