Django 在登錄時回圈會話密鑰。理由(我不明白)在這個拉取請求中:
登錄時,更改會話密鑰,同時保留任何現有會話。這意味著用戶將看到他們跨登錄邊界保留的會話,但窺探匿名會話密鑰的人將無法查看經過身份驗證的會話資料。
如果您希望輕松地將未經授權的行為與稍后登錄的用戶相關聯,那么回圈會話密鑰會很尷尬。這個答案建議簡單地禁用cycle_key。
禁用cycle_key有什么風險?(與上述評論或其他評論有關。)
編輯:好的,我想我理解上面的基本原理。它的字面意思是,如果您窺探了未授權操作,您將無法將它們與授權操作相關聯。我可以看到這可能有多好,但是 1) 理想情況下,unauth 和 auth 操作都受到保護(例如,https),2) 必須權衡安全優勢與保留會話密鑰的優勢。
編輯 2:拉取請求是從 2008 年開始的,當時 https 環境完全不同。 現在是 >=90% https。
uj5u.com熱心網友回復:
查看它的檔案cycle_key說(強調我的):
創建一個新的會話密鑰,同時保留當前會話資料。 django.contrib.auth.login() 呼叫此方法來緩解會話固定。
因此,回圈會話密鑰的原因是為了防止會話固定攻擊 [OWASP]。經過一些研究,會話固定攻擊基本上是攻擊者從服務器獲取會話 ID(或使用任意一個),并通過某種方式(XSS 攻擊、MITM 攻擊等)強制其他用戶使用此會話 ID對您的服務器進行身份驗證。如果這里的服務器沒有更改會話密鑰,攻擊者現在可以接管用戶會話并模擬他們。
因此禁用它是一個很大的風險,禁用它的回報也很小。我建議你(和任何閱讀本文的人)不要禁用這個內置功能,事實上,不要在沒有好好考慮的情況下禁用任何 Django 的安全功能。
關于與關聯認證未認證行為行為更好由作為描述本身其序列中的用戶會話存盤資料做了這樣的回答的第二個方法由貢薩洛。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313705.html
下一篇:訪問s3資源的最安全方式是什么?
