用戶帳戶,授權和密碼管理的12個最佳實踐
賬戶管理,授權和密碼管理往往是很棘手的。對很多開發者來說,賬戶管理功能是一個暗角,不會引起足夠的重視。對于產品經理和用戶來說,產品的最終體驗往往超出預期。
幸運的是,谷歌云平臺(GCP)提供了一些工具,能夠使你在產品創造、安全處理和用戶賬號(本文中指任何在你系統中注冊的人——消費者或者內部用戶)認證方面做出更好的決策。不論你負責的是什么系統,部署在 Google Kubernetes Engine 上的WEB網站、 Apigee 上的API服務、使用 Firebase 的應用或者任何包含用戶認證的服務,這篇文章會提供最佳實踐,來保證你擁有一個安全的、可伸縮的、可用的賬戶認證系統。
1. 對密碼字段做哈希處理
對于賬戶管理,最重要的原則就是要安全地存儲用戶的敏感信息,包括用戶的密碼。用戶的數據是神圣的,必須要適當的處理。
任何情況下都不要存儲明文密碼。你的服務中要藝術的哈希處理密碼,并且不能解密密碼——例如,使用 PBKDF2, Argon2, Scrypt, or Bcryp創建。這個哈希值應該是對用戶唯一的登錄憑證加鹽處理后的結果。不要使用過時的哈希處理技術如MD5、SHA1,并且在任何情況下都不應該使用可解密的算法或者嘗試發明哈希算法。
你應該假設你設計的系統最終會被泄露。問問你自己“如果我的數據今天泄露了,在使用我的服務或者他們使用的別的服務時,我的用戶的安全和隱私會受到威脅嗎?我們可以做些什么來減輕這種潛在的數據泄露可能造成的危害?”
另一個需要考慮的事情:當用戶提供給你密碼之后,如果你能在任何時候產出一個用戶的明文密碼,那么你的實現就是有問題的。
2. 盡可能允許第三方身份認證
第三方身份認證提供者使你可以依賴一個第三方值得信賴的服務認證用戶的身份。谷歌、Facebook和推特通常是可用的提供者。
除了已經存在的內部認證系統,你可以使用一個平臺(如 Firebase 認證)接入一個第三方的認證服務。 Firebase 認證有很多好處,如管理更簡單、攻擊入口更小和跨平臺的SDK。通過這個列表我們會提出很多好處,具體查看 案例學習
Firebase認證。
3. 區分用戶身份和用戶賬戶的概念
你的用戶不是電郵地址。他們不是電話號碼。他們不是由OAUTH響應提供的唯一ID。 你的用戶是你服務中獨有的個性化數據和體驗的聚合。設計良好的用戶管理系統在用戶個人資料的不同部分之間具有低耦合性和高內聚性。
保持用戶帳戶和證書的概念分離將大大簡化實施第三方認證提供商的過程、允許用戶更改其用戶名并將多個身份鏈接到單個用戶帳戶上。實際上,為每個用戶提供一個內部全局標識符并通過該ID鏈接其配置文件和身份驗證標識可能會有所幫助,而不是將其全部集中到一條記錄之中。
責任編輯:任我行