簡體   English   中英

用於檢查身份驗證的快速會話中間件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM