PHP 網站上宣告“開發人員不得使用長壽命會話 ID 進行自動登錄,因為這會增加會話被盜的風險。”。相反,建議使用安全的一次性散列密鑰作為自動登錄密鑰setcookie(),然后使用- 然后成為持久性 cookie。
但我不明白那怎么更安全?
帶有令牌的持久性 cookie 也可能被竊取,如果您確保您的網站從不只使用 HTTP,而是只使用 HTTPS(如 HSTS),并且還使用httponly.
我在這里錯過了什么?
uj5u.com熱心網友回復:
我猜他們的意思。我相信當他們說“安全的一次性散列密鑰”時,他們的意思是某種HOTP 機制。然后我有更多的猜測他們想用它實作什么。他們希望能夠在超時時終止會話,但他們也希望客戶端能夠通過簡單地呼叫其內部 HOTP 機制并生成下一個令牌并最終將其傳遞給服務器來自動重新創建會話。
這是大量的猜測,但老實說,說“安全的一次性散列密鑰”并不意味著什么,這樣的表達真的很模糊。
uj5u.com熱心網友回復:
我想我自己已經找到了正確的答案。
會話 cookie 用于在請求之間保持狀態。它可用于在瀏覽器打開會話期間跟蹤登錄,但會話應在用戶注銷或瀏覽器關閉時結束。持久性 cookie 中的“記住我”令牌不用于在請求之間保持狀態,它僅用于“跳過”登錄程序并允許訪問其他需要登錄的特定頁面。當您使用時,$_SESSION您正在處理會話 cookie,并且會話 ID 僅存盤在瀏覽器或客戶端中,您放入$_SESSION陣列的所有值都存盤在服務器上的一個檔案中(默認情況下),該檔案包含純文字。
“記住我”的持久性 cookie 不用于類似的事情,它只在瀏覽器中保留一個哈希令牌,以便識別用戶并避免每次訪問網站時都必須登錄。
換句話說,會話 cookie 和持久性“記住我”cookie 是針對兩個不同問題的兩種不同解決方案。
您可以使用“記住我”cookie 來“保持狀態”,但這不是它的用途,它不會為您提供會話。您可以使用會話 cookie 來實作“記住我”功能,但這不是它的用途,它用于在服務器上存盤狀態變數并在會話中保持狀態。
但是,如果您為 cookie 實施了適當的安全功能,即僅在 HTTPS 上提供服務并使用secure和httponly,那么就竊取 cookie 或會話 ID 的風險而言,它們都是同樣安全的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360061.html
上一篇:如果我使用像Angular這樣的框架,我需要后端換前端嗎?
下一篇:附加帶有條件的行
