用户帐户,授权和密码管理的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链接其配置文件和身份验证标识可能会有所帮助,而不是将其全部集中到一条记录之中。
责任编辑:任我行
-
碳中和战略|赵英民副部长致辞全文
2020-10-19碳中和,碳排放,赵英民 -
两部门:推广不停电作业技术 减少停电时间和停电次数
2020-09-28获得电力,供电可靠性,供电企业 -
国家发改委、国家能源局:推广不停电作业技术 减少停电时间和停电次数
2020-09-28获得电力,供电可靠性,供电企业
-
碳中和战略|赵英民副部长致辞全文
2020-10-19碳中和,碳排放,赵英民 -
深度报告 | 基于分类监管与当量协同的碳市场框架设计方案
2020-07-21碳市场,碳排放,碳交易 -
碳市场让重庆能源转型与经济发展并进
2020-07-21碳市场,碳排放,重庆
-
两部门:推广不停电作业技术 减少停电时间和停电次数
2020-09-28获得电力,供电可靠性,供电企业 -
国家发改委、国家能源局:推广不停电作业技术 减少停电时间和停电次数
2020-09-28获得电力,供电可靠性,供电企业 -
2020年二季度福建省统调燃煤电厂节能减排信息披露
2020-07-21火电环保,燃煤电厂,超低排放
-
四川“专线供电”身陷违法困境
2019-12-16专线供电 -
我国能源替代规范法律问题研究(上)
2019-10-31能源替代规范法律 -
区域链结构对于数据中心有什么影响?这个影响是好是坏呢!