我試圖找出使用基於會話ID認證VS基於Cookie認證認證會話ID VS餅乾
就的優點和缺點,我可以在基於Cookie認證見
- 用戶提交登錄請求發送他們的憑據
- 憑據針對數據庫檢查
- cookie將與用戶的細節設置
- 這將通過https完成,cookies將被加密。
- 在.NET中,如果這是authcookie用戶身份將被設置
- 的DB是打了一次,並且後續調用只檢查身份驗證cookie的
在基於會話的認證的情況下
- 用戶提交登錄請求發送其憑據
- 憑據檢查數據庫
- 將生成會話ID並也存儲在一個數據庫
- cookie將與用戶的詳細信息,並生成會話ID
- 後續調用會比較反對一個會話ID在數據庫
- 該DB命中每次
問題
是否有任何理由更喜歡一個比另一個?基於cookie的安全性是否較低(即使您對它們進行了加密和簽名)?基於會話的性能是否因爲在每次調用期間碰到數據庫而變得更糟?我看到幾個站點傾向於某種方式,但無法清楚地瞭解使用哪種方法。任何討論/建議將不勝感激。
道歉延遲答覆。目前,我正在審覈一些實際上在用戶登錄時創建會話密鑰的代碼(Java),並將其作爲cookie存儲,並且每次調用受保護的服務時,都會獲取會話密鑰並檢查數據庫以查看會話是否處於活動狀態。這似乎是一個不同於asp窗體auth的設計,我們每次都不打db。會話和檢查數據庫的方法似乎效率低下。我是這麼想的嗎? – user275157
我的意見:通過會話檢查來查詢每個請求並不是什麼大問題。會話表本身將需要仔細索引和優化以避免瓶頸。 – Brett
謝謝。而且可以肯定 - 我認爲上述方法不一定比表單認證方法更安全嗎? – user275157