快速会话安全:true

问题描述 投票:0回答:2
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。

node.js security session express-session
2个回答
27
投票

如果使用

secure
标志设置 cookie,则浏览器只会通过 https 而不是纯 http 发送到服务器。这应该是生产环境的默认设置。

但是,在开发应用程序时,您可能在开发计算机上使用纯 http。如果您在这种情况下将会话 cookie 设置为

secure
(使用纯 http),服务器将永远不会收到它,并且您将在每个请求中体验到一个新的空会话。

简而言之,如果您使用 https(即,在开发流程的后期阶段,并且绝对是在生产中),则应该仅将 cookie 设置为

secure

另一方面,如果您设置

maxAge
,cookie 将被保留,这不是会话 cookie 的最佳实践。如果没有
maxAge
,Cookie 将保留到用户关闭浏览器为止,并且通常不会持久保存到磁盘,这是会话 Cookie 的正确行为。


0
投票

对于发展:

cookie: {
  httpOnly: true  

}

用于生产:

cookie: {
  secure: true   

}

如果使用

secure
标志设置 cookie,则浏览器只会通过
https
将其发送到服务器,而不是普通的
http
。这应该适用于生产环境。

但是,在开发应用程序时,您将使用普通的

http
。如果您在这种情况下将会话 cookie 设置为安全(使用纯 http),服务器将永远不会收到它,并且您将在每个请求中体验到一个新的空会话。

简而言之,如果您使用 https,则应仅将 cookie 设置为安全;如果您使用 http,则应仅将 cookie 设置为安全。

© www.soinside.com 2019 - 2024. All rights reserved.