2016-10-29 61 views
0
app.use(session({ 
    secret: "testing credentials", 
    store: sessionStore, 
    resave: true, 
    saveUninitialized: true, 
    cookie : { 
     httpOnly: true, 
     //secure: true, 
     maxAge : 60 * 60 * 1000 
    } 
})); 

我正在處理我新開發的網站上的一些安全問題。在網上做了一些研究之後,如果設置了安全=真,那麼它會更安全。但是, 如果設置secure:true,則每當用戶發送另一個請求時,會話內的信息都會丟失。有沒有辦法解決這個問題?如果cookie中沒有包含「secure:true」,那麼會話將持續該maxAge。express-session secure:true

回答

0

如果使用secure標誌設置cookie,則只會通過https通過瀏覽器將其發送到服務器,而不是純http。這應該是生產環境的默認值。

但是,在開發應用程序時,您可能會在開發機器上使用純http。如果在這種情況下(使用普通http)將會話cookie設置爲secure,則服務器將永遠不會收到它,並且您將在每個請求上遇到新的空會話。

因此,如果您使用的是https(即在開發流程的後期階段,並且絕對是在生產階段),那麼您應該只將Cookie設置爲secure

另一方面,如果您設置maxAge,cookie將被保留,這不是會話cookie的最佳做法。如果沒有maxAge,cookie將一直保留到用戶關閉瀏覽器並且通常不會持續保存到磁盤,這對於會話cookie來說是正確的行爲。