0
我正在使用node.js.我正在考慮在會話變量中存儲一個會話ID,這樣每次我向某個路由發出請求時,服務器都會檢查數據庫中具有該會話ID的用戶是否有權訪問該頁面。如何在沒有數據庫開銷的情況下檢查授權?
這似乎有點低效,因爲每個頁面請求都會有數據庫調用。我知道我可以將一些數據存儲在cookies/session變量中以避免數據庫調用,但是我容易被篡改。
其他Web開發人員如何處理此問題?
我正在使用node.js.我正在考慮在會話變量中存儲一個會話ID,這樣每次我向某個路由發出請求時,服務器都會檢查數據庫中具有該會話ID的用戶是否有權訪問該頁面。如何在沒有數據庫開銷的情況下檢查授權?
這似乎有點低效,因爲每個頁面請求都會有數據庫調用。我知道我可以將一些數據存儲在cookies/session變量中以避免數據庫調用,但是我容易被篡改。
其他Web開發人員如何處理此問題?
與https一起使用的服務器端會話和關聯的加密會話cookie是安全的。所以,只要在服務器端會話中保留一個值,告訴你用戶是否已經過身份驗證,並且只需在服務器端會話對象中檢查該變量即可。這就是我所知道的每個網站都會做的事情。
與適當的會話存儲一起使用的NPM模塊express-session
將爲您執行大部分操作。
如果你有一個特定的原因,爲什麼你認爲這不安全,請分享這些原因,以便他們可以討論。
以下是關於確保node.js服務器安全的一般性文章,第6條關於保護會話cookie:9 Security Tips to Keep Express from Getting Pwned。
我猜想我試圖在會話cookie中儘可能少地存儲信息,簡單地說,如果有人「讀取」cookie中的信息,他們不會了解有關網站內部功能的任何信息。我想一個簽名的cookie和https應該有助於避免篡改。 –
@KaizerSozay - 類似express-session的東西只在cookie中存儲單個會話ID(只有長的加密字符串)。所有其他用戶會話狀態都存儲在服務器端的實際會話對象中,服務器本身以外的任何人都無權訪問該對象。 – jfriend00
謝謝。我不知道! –