Asp.net
在 cookie 中加密會話 ID(或其他身份驗證值)是否有用?
在 Web 開發中,當啟用會話狀態時,會話 id 會儲存在 cookie 中(在 cookieless 模式下,將使用查詢字元串代替)。在 asp.net 中,會話 ID 是自動加密的。網際網路上有很多關於如何加密 cookie 的主題,包括會話 ID。我可以理解您為什麼要加密諸如 DOB 之類的私人資訊,但任何私人資訊都不應首先儲存在 cookie 中。那麼對於其他cookie值比如session id,加密的目的是什麼?它是否增加了安全性?無論您如何保護它,它都會被發送回伺服器進行解密。
再具體一點,
出於認證目的,
- 關閉會話,我不想再處理會話超時
- 在 cookie 中儲存某種 id 值,
- 在伺服器端,檢查 id 值是否存在並匹配,如果是,則驗證使用者。
- 當瀏覽器會話結束時,讓 cookie 值過期,這樣。
對比
Asp.net 表單身份驗證機制(我認為它依賴於會話或會話 ID)
後一種是否提供更好的安全性?
會話劫持等會話的攻擊旨在獲取有效的會話 ID。如果您現在要加密會話 ID,攻擊者只會瞄準加密的會話 ID,而您將沒有任何優勢。所以加密會話 ID 是沒有用的。請記住,會話 ID 只是用於標識會話的隨機值。攻擊者不需要知道該隨機值是否具有某種特定含義;他們只需要知道那個隨機值。
如果您想保護您的會話,請使用 HTTPS 通過 SSL 加密整個 HTTP 通信,並僅使用標誌設置 cookie
- 僅允許通過 HTTPS 發送 cookie 和
- HttpOnly禁止通過 JavaScript 進行本地訪問。