express-session secure:true

时间:2016-10-29 22:01:48

标签: node.js security session express-session

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。

1 个答案:

答案 0 :(得分:1)

如果使用secure标志设置了cookie,它将仅由浏览器通过https发送到服务器,而不是普通的http。这应该是生产环境的默认设置。

但是,在开发应用程序时,您可能在开发机器上使用纯http。如果在这种情况下将会话cookie设置为secure(使用普通的http),服务器将永远不会收到它,并且您将在每个请求中遇到一个新的空会话。

因此,简而言之,如果您使用https(即在开发流程的后期阶段,并且肯定在生产阶段),您应该只将cookie设置为secure

另一方面,如果您设置maxAge,Cookie将被保留,这不是会话Cookie的最佳做法。如果没有maxAge,cookie将被保留,直到用户关闭浏览器并且通常不会持久存储到磁盘,这是会话cookie的正确行为。