2012-04-18 67 views
0

在我的web應用程序我處理身份驗證方式如下:我的身份驗證方法是否安全/需要改進?

  1. 用戶輸入自己的電子郵件地址和密碼

  2. 搜索用戶在數據庫中,比賽bcrypt加密的密碼?

  3. 如果是這樣,一個新的會話記錄被存儲在數據庫中,它是用戶ID和一個128位的隨機密鑰。此密鑰也以「安全」,「僅限http」cookie的形式存儲在客戶端。

  4. 每當用戶向Web應用程序發出請求時,該鍵就是在db中搜索會話的引用。如果有一個會話 - >認證。

  5. 會話是一定量的時間(例如3小時)

注後刪除:所有請求都是SSL加密。

您是否發現此驗證過程中存在任何缺陷?在處理這件事時會有什麼危險?

謝謝!

Elias

回答

1

我可以在這裏看到兩個DoS攻擊場景。

  1. 一個機器人可以在你的服務器觸發與隨機會話ID的隨機請求,導致這麼多的會議查找您的會話管理可以變得不知所措理想的,如果你的會話ID可以被驗證是使用前一種算法有效的會話ID被檢查對數據庫它會更好。
  2. 登錄屏幕可以通過各種uid/pwd組合的機器人命中,這將導致在數據庫中進行多次用戶/密碼搜索。在內存中使用LRU uid/pwd緩存可以解決此問題,並且還可以爲來自相同IP的多個請求進行登錄驗證。

您沒有觸及的一點是,您何時會過期會話 - 如果用戶未註銷何時會從表中清除會話ID?如果在此期間會話ID被從cookie中劫持,會怎麼樣?

相關問題