簡體   English   中英

存儲永久訪問令牌與存儲密碼一樣好嗎?

[英]Is storing a permanent access token as good as storing password?

如果我想保留用戶的登錄信息,以便即使在例如閑置1年后也不必重新登錄,則存儲永久訪問令牌與直接存儲密碼(可能是哈希值)一樣,因為(永久)訪問令牌本質上是“替代密碼”?

與直接存儲密碼相比,存儲訪問令牌肯定比安全得多,但是讓我們看看原因:

  1. 攻擊者只能獲得此令牌,而不能獲得原始密碼。 這樣會更好,因為密碼經常在其他站點上重用,並且/或者可以顯示密碼方案。 ➽確保令牌是隨機的,並且不是來自密碼。
  2. 令牌不僅是另一個密碼。 盡管用戶選擇的密碼通常很弱,但令牌卻很強。 它們是如此強大,以至於無法強行使用。 ➽生成足夠長的隨機令牌,它們應至少為20個字符az,AZ,0-9。

一般來說,是的。 但是 ,有很多警告。

由CSPRNG生成的長而隨機的令牌(這很重要,生成“隨機”字符串的方式有很多,但並非所有字符串都是真正的隨機的)比密碼更強-是的。 但是,您打算使用此令牌的方式意味着該令牌本身實際上就是一個密碼,並且意味着適用相同的條件:

  • 它不能是永久的。

    密碼的關鍵屬性是它們不是常數,用戶可以在被盜時或隨着時間的推移更改密碼。 任何種類的令牌都應該沒有什么不同,除了它應該由您的應用程序定期定期更改(旋轉)。

  • 必須將其哈希!

    (具有強大的算法:bcrypt,scrypt,Argon-2I,PBKDF2;其他任何原因都是錯誤的)

    永遠不要在任何地方以純文本格式存儲用戶密碼。 即使可以確保用戶不在任何其他站點上使用此密碼,純文本密碼也意味着任何可以在數據庫上使用的人(即使是很短的時間)也可以劫持用戶帳戶。
    您有責任不僅保護用戶免受“黑客”的侵害,還保護您自己。

  • 即使將其哈希或加密,也不要將其存儲在Cookie中。

    您對問題的措辭方式意味着您會做這樣的事情。 Cookies不是存儲任何類型密碼的安全位置。 臨時,短暫的令牌 -可以,但不能密碼。

看來您正在嘗試設計自己的身份驗證協議,這並非易事。 使它工作起來可能很容易,但這只占工作量的5%。 有太多細節需要考慮。 所有這些,對於節省用戶偶爾輸入密碼的不便的微小好處來說,人們已經習慣了; 這不值得承擔安全隱患。

如果您不願提供長期的登錄信息,我建議您使用現有的身份驗證協議。 每個這樣的協議都使用加密簽名,從而完全避免了對用戶密碼的依賴,從而幾乎完全消除了所有上述問題。

就個人而言,我只允許所謂的“社交登錄”-通過Facebook,Google,Twitter。 您根本不需要處理密碼,任何人都可以單擊一下按鈕登錄。

存儲訪問令牌比存儲密碼或哈希密碼更好(總是可以嘗試通過蠻力找到密碼),並且我認為您應該終身賦予令牌。

盡管答案是肯定的,但是這還取決於您存儲令牌的位置。 您可能還希望使用XSRF / CSRF令牌以及該令牌對用戶進行身份驗證。

但是存儲令牌比存儲密碼更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM