[英]express-session middleware to check authentication
我對使用express-session
的會話有疑問。 我真的不明白會話是如何安全的。 例如在以下官方指南中: https ://expressjs.com/en/resources/middleware/session.html 他們創建了一個中間件來檢查用戶是否經過身份驗證:
// middleware to test if authenticated
function isAuthenticated (req, res, next) {
if (req.session.user) next()
else next('route')
}
但我不明白,為什么這個中間件不檢查會話實際上是否在數據庫中? 攻擊者可以使用隨機值修改會話 cookie,並且user
字段中仍然會有一些值,即使它是垃圾值,不是嗎? 所以函數仍然會認為這是一個經過身份驗證的用戶。
為什么這是不可能的?
就我而言,我在會話中設置userId
,然后每次有人發出請求時,我都會檢索它的userId
,但我不明白,如果有人修改了 cookie 並獲得了隨機的userId
值怎么辦? 我的應用程序會認為該用戶已通過身份驗證,對嗎?
為什么這個中間件不檢查會話實際上是否在數據庫中?
您正確期望完成的這項檢查之前已經在express-session
中間件中完成:這會在會話存儲(可以是數據庫)中查找會話 cookie 的值,並相應地填充req.session
。 由於會話 cookie 的值是不可猜測的,因此輸入隨機值的攻擊者將使req.session
未定義,並且isAuthentication
檢查將失敗,這是應該的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.