設計你的密碼政策
深入了解如何設計產品的密碼政策,確保其合規、安全且用戶友好,同時 Logto 保障你的認證過程的安全性。
你的密碼真的能保護你嗎?
在你的產品中,你可能需要依靠經典的認證方法——密碼。儘管密碼不會完全被取代,但相比於其他認證方法,密碼更容易受到攻擊。你的密碼政策是否真正安全且合規?即使你熟悉各種密碼政策技術,疊加它們是否真的有效?
我們通過深入研究 NIST 規範,檢查領先的產品密碼政策,並確保平衡的用戶體驗,來解決密碼政策設計和配置的複雜性。強調密碼合規性的重要性,我們旨在幫助你解決與密碼策略相關的挑戰,並提供一個全面的過程,通過與其他多因素身份驗證 (MFA) 驗證因素的無縫集成來確保帳戶安全性。
用戶需要什麼樣的密碼?
產品設計師經常困惑於他們的產品是否足夠安全,從而實施嚴格和複雜的密碼政策。例如,要求大寫和小寫字母、數字,甚至特殊字符的組合,或要求員工定期更改密碼。
當面對這些密碼要求時,用戶往往抱怨:“為什麼必須這麼複雜?記住我的密碼感覺像是一份全職工作!”這讓產品經理抓耳撓腮,想知道更複雜的密碼政策是否一定更好。讓我們分解綜合密碼政策的組成部分來找出答案。
在下一部分,我們將深入探討密碼政策的細微差別,在安全性和用戶便利之間取得平衡。我們將探索如何定義正確的密碼要求,並提供由數據支持的見解 來支持我們的方法。
類別一覽表:密碼因素
首先,在分析了大量產品和 NIST 規範後,我們編制了一份完整的密碼因素和設計建議清單。
我們將它們大致分為三組:
- 密碼設置要求:用戶設置密碼的最低要求。
- 密碼安全監控:在檢測到密碼風險時啟動的提示行動和反饋。
- 密碼用戶體驗:在密碼創建和驗證過程中提升用戶輸入的體驗。
類目 | 因素 | 分析(參考 https://pages.nist.gov/800-63-3/sp800-63b.html#sec5 ) |
---|---|---|
設置密碼要求 | 長度 | 增加密碼長度比複雜性更有效地防止密碼破解。NIST 建議至少 8 個字符長度,但應允許更長的密碼。 |
字符類別 | 密碼可以支持各種字符類型,包括大寫字母、小寫字母、數字、符號和 Unicode(空格字符也應允許)。 | |
密碼政策不應提示用戶回憶特定類型的信息,因為這已經被證明增加了複雜性,而未有效提升安全性。https://www.notion.so/General-f14f0fb677af44cb840821776831a021?pvs=21 | ||
低安全性短語 | 建議在用戶使用容易猜測或破譯的模式(如重複或連續字符、常用單詞、用戶信息或產品上下文信息)時,提示他們更改密碼。 | |
被洩漏的密碼 | 應檢查新用戶密碼是否在已泄露的密碼列表中,以確保它們未被洩漏。 | |
密碼安全監控 | 密碼驗證速率限制 | 限制連續不正確密碼嘗試的次數。達到此限制後,實 施安全措施,例如要求多因素身份驗證 (MFA)、發送推送通知、施加冷卻時間,甚至暫時凍結帳戶。 |
強制更改密碼 | 不應任意要求更改密碼。然而,若有證據表明身份驗證器受到威脅,驗證者應強制更改密碼。 | |
密碼歷史記錄 | 保持過去不可重複使用的密碼記錄。不宜過度限制密碼重用,因為用戶可能會通過微小的更改來繞過此規定。 | |
更改密碼後清除會話 | 允許用戶選擇在更改密碼後是否登出其他設備。 | |
密碼輸入體驗 | 密碼強度指示器 | 為用戶提供指導,幫助他們選擇強密碼。 |
密碼提示 | 避免顯示密碼提示,因為它們會增加未授權訪問的可能性。 | |
複製和貼上密碼 | 允許使用“粘貼”功能,這方便了密碼管理器的使用。 | |
顯示密碼 | 提供選項,在提交之前顯示輸入的密碼,而不是顯示一系列點或星號。 |
配置你的密碼體驗的工具
或許你沒有耐心查看清單中的每一項。如果我們設計一個強大的密碼工具,包含所有這些配置選項,對開發者來說可能會成為一個頭痛的問題,比複雜的密碼政策本身更為複雜。因此,讓我們進一步簡化密碼因素,分為三個步驟。
步驟 1:捨棄不必要的規則
如表中所述,一些過時的密碼規則可能看似增強了安全性,但實際上毫無益處,往往引起用戶的沮喪和混淆。
- 避免限制用戶必須使用的字 符組合;限制字符類型的數量就足夠了。例如,Facebook、Discord 和 Stripe 不要求特定的字符類型組合,而 Google 的密碼政策僅要求使用“至少兩種類型的字母、數字、符號。”
- 不要要求定期更改密碼,因為這對用戶的記憶造成了不必要的負擔。只有在存在憑據危險時需要更改密碼。
- 只選擇一個密碼限制,設置明確的最低密碼要求和密碼強度指示器,以防止用戶誤解。
- 避免在一開始就顯示過於複雜的規則,防止用戶只顧閱讀未必會發生的錯誤。
- 避免使用密碼提示,避免給潛在攻擊者帶來優勢。
步驟 2:為不同產品提供定制化選項
我們提供靈活的最低密碼政策配置選項,並推薦值以減少開發者的學習曲線,並提供開箱即用的登錄體驗。這些選項包括:
- 最小長度:默認值為 8 個字符,最小值為 1。
- 最小必需字符類型:建議無限制,即設置為 4 種中的 1 種。
- 密碼限制詞彙:建議啟用所有限制。用戶不能避免觸發相同的詞彙,但允許添加三個或更多不連續字符以增加密碼的複雜性。這一增加提高了密碼的無序性。
- 禁用被洩漏的密碼:使用可靠的已洩漏密碼數據庫,防止用戶使用相同密碼以避免直接目錄攻擊。
步驟 3:用固定值保障安全
對於不能自定義的參數,我們已實施備份邏輯以確保密碼安全。如果你有具體的自定義需求,請隨時告訴我們。
- 密碼驗證速率限制:我們限制了連續不正確密碼驗證的次數以及中止登錄的冷卻時間。這保護免受持續的密碼攻擊。此外,我們提供了一個 webhook 用於連續失敗的密碼驗證,你可以用它來發送電子郵件通知或暫停存在高風險的帳戶。
- 默認情況下,我們在重設密碼並刷新令牌後清除其他設備上的會話。這一附加的安全層可以幫助防止未授權訪問你的帳戶,確保你的數據保持機密和受保護。
結論
通過這三個簡單步驟,你可以簡化配置密碼體驗的過程,在安全性和用戶便利之間取得正確的平衡。Logto 讓你輕鬆設置安全且用戶友好的產品認證系統。敬請期待我們即將推出的 MFA 特性,並從未有過地掌控你的產品安全。