[英]Is storing a permanent access token as good as storing password?
如果我想保留用戶的登錄信息,以便即使在例如閑置1年后也不必重新登錄,則存儲永久訪問令牌與直接存儲密碼(可能是哈希值)一樣,因為(永久)訪問令牌本質上是“替代密碼”?
與直接存儲密碼相比,存儲訪問令牌肯定比安全得多,但是讓我們看看原因:
一般來說,是的。 但是 ,有很多警告。
由CSPRNG生成的長而隨機的令牌(這很重要,生成“隨機”字符串的方式有很多,但並非所有字符串都是真正的隨機的)比密碼更強-是的。 但是,您打算使用此令牌的方式意味着該令牌本身實際上就是一個密碼,並且意味着適用相同的條件:
它不能是永久的。
密碼的關鍵屬性是它們不是常數,用戶可以在被盜時或隨着時間的推移更改密碼。 任何種類的令牌都應該沒有什么不同,除了它應該由您的應用程序定期定期更改(旋轉)。
必須將其哈希!
(具有強大的算法:bcrypt,scrypt,Argon-2I,PBKDF2;其他任何原因都是錯誤的)
永遠不要在任何地方以純文本格式存儲用戶密碼。 即使可以確保用戶不在任何其他站點上使用此密碼,純文本密碼也意味着任何可以在數據庫上使用的人(即使是很短的時間)也可以劫持用戶帳戶。
您有責任不僅保護用戶免受“黑客”的侵害,還保護您自己。
即使將其哈希或加密,也不要將其存儲在Cookie中。
您對問題的措辭方式意味着您會做這樣的事情。 Cookies不是存儲任何類型密碼的安全位置。 臨時,短暫的令牌 -可以,但不能密碼。
看來您正在嘗試設計自己的身份驗證協議,這並非易事。 使它工作起來可能很容易,但這只占工作量的5%。 有太多細節需要考慮。 所有這些,對於節省用戶偶爾輸入密碼的不便的微小好處來說,人們已經習慣了; 這不值得承擔安全隱患。
如果您不願提供長期的登錄信息,我建議您使用現有的身份驗證協議。 每個這樣的協議都使用加密簽名,從而完全避免了對用戶密碼的依賴,從而幾乎完全消除了所有上述問題。
就個人而言,我只允許所謂的“社交登錄”-通過Facebook,Google,Twitter。 您根本不需要處理密碼,任何人都可以單擊一下按鈕登錄。
存儲訪問令牌比存儲密碼或哈希密碼更好(總是可以嘗試通過蠻力找到密碼),並且我認為您應該終身賦予令牌。
盡管答案是肯定的,但是這還取決於您存儲令牌的位置。 您可能還希望使用XSRF / CSRF令牌以及該令牌對用戶進行身份驗證。
但是存儲令牌比存儲密碼更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.