卓航论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 94|回复: 2
打印 上一主题 下一主题

用户帐户安全,授权和密码管理的12个最佳实践

[复制链接]
[未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 新手上路
 UID:  543   [未点亮普号显示]钻石不足3个
 阁 分: 34
 阁 望: 0
 阁 献: 0
 活 跃: 0
 发 贴: 8 (0)
 阁 币: 26  
性 别: I'm 火星人!
阅读权限: 10
在线时长: 0 小时
注册时间: 2018-4-10
最后登录: 2018-4-10
go
楼主
发表于 2018-4-13 09:48:39 |只看该作者 |倒序浏览
本帖发表于 2018-4-13 09:48:39...阅读 95 人...加油,亲爱的楼主:自由者
账户管理,授权和密码管理往往是很棘手的。对很多开发者来说,账户管理功能是一个暗角,不会引起足够的重视。对于产品经理和用户来说,产品的最终体验往往超出预期。
幸运的是,谷歌云平台(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链接其配置文件和身份验证标识可能会有所帮助,而不是将其全部集中到一条记录之中。
4. 允许多个身份关联到单个用户账号
一开始使用 用户名和密码 认证登录到服务的用户,后面可能会使用 Google Sign-In 来登录。他们并不知道这会创建多余的账号。类似地,由于某些原因,服务中的一个用户可能会关联到多个电子邮箱。如果能正确的分离用户身份和认证信息,将 多个身份链接 到同一个用户就会变得简单。
你的后台需要考虑到用户可能会通过一部分甚至所有途径来通过注册过程,但他们并没有意识到在新的第三方身份没有关联到他们已经存在于系统中的账号。最简单的实现是要求用户提供一个共同的细节用于识别,比如电子邮件地址,电话或用户名等。如果该数据与匹配到系统中现有的用户,则要求他们认证已知身份并将新的 ID 关联到已存在的账号上。
5. 不要拒绝长密码或者复杂的密码
NIST 最近更新了关于 密码复杂度和强度 的准则。如果你正在(或马上会)使用高强度的散列算法来保存密码,很多问题就会迎刃而解。不管输入的内容有多长,散列算法都会生成固定长度的输出,所以用户可以使用他们喜欢的长密码。如果你必须限制密码长度,应该仅从服务支持的最大 POST 大小来考虑限制。严格地说,这通常大于 1M。
散列后的密码由大家都知道的一小部分 ASCII 字符组成。就算不是,也很容易通过 Base64 把二进制数据转换过来。考虑到这一点,你应该允许用户在密码中随意使用字符。如果有人想在密码中使用克林贡语、表情字符和控制字符并在两端加入空白字符,你应该没有技术方面的理由来拒绝他们。
6. 不要为用户名强加不合理的规则
有些网站或服务要求用户名的字符数不低于两三个字符,不允许不可见字符,前后不能有空格,这些都毫无道理。然而,有些网站会要求最小长度为 8 个字符,只允许使用 7 位(bit) 的 ASCII 字母和数字。
在网站上严格限制用户名,可能会为开发者带来方便,但在某些极端情况下对用户的要求会让某些用户望而却步。
某些情况下最好的办法是指定用户名。如果你的服务中遇到这种情况,需要确保指定的用户名对用户来说很容易想起来也很容易告诉别人。字母数字组合的 ID 应该避免视觉上不易识别的符号,比如“Il1O0”。同时还建议对随机生成的字符串进行字典扫描,确保用户名中没有意外嵌入一些信息。这一原则同样适用于自动生成的密码。
7. 允许用户更改他们的用户名
在遗留系统或任何提供电子邮件帐户的平台中,不允许用户更改其用户名是非常常见的。这里有很多 好的理由 支持不自动释放用户名以供重复使用,但系统的长期用户最终会给出一个很好的理由来使用不同的用户名,并且他们可能不想创建新的帐户。
你可以通过允许别名并让你的用户选择主别名来满足用户期望更改其用户名的愿望。你可以在此功能之上应用所需的任何业务规则。某些组织可能每年仅允许更改一次用户名,或将阻止用户显示除主用户名以外的任何内容。电邮供应商可能会确保用户在将老用户名从其帐户中分离出来之前充分得了解了相关风险,或者可能完全禁止将老用户名断开链接。
为你的平台选择合适的规则,但要确保它们允许你的用户随着时间的推移而成长和改变。
8. 允许你的用户删除自己的账号
相当数量的服务没有用于用户删除其账户及相关数据的自助服务手段。用户永久关闭帐户并删除所有个人数据有很多好的理由。这些问题需要根据你的安全行和合规需求进行平衡,但大多数受监管的环境提供了有关数据保留的具体指导。避免合规和攻击的常见解决方案是让用户自己规划其帐户以备将来自动删除。
在某些情况下,你可能需要 遵照 用户的要求,及时删除其数据。如果发生数据泄露,对于发生“已关闭”帐户的数据泄露情况,你还可以大大提高你的曝光率。
9. 在会话长度上有意识地做决定
在安全验证上常常被忽略的是 会话长度 。Google 作出了一些努力来 确保用户的行为 并进行双重检查,这主要基于某些事件和行为。用户可以有步骤地 进一步加强他们的安全性 。
你的服务可以有明确的理由来保持会话,而不是非关键分析目的无限期开放,但是,应该有一个 门槛 来要求您输入密码、或第二个因素或其他用户验证。
考虑多久的时间用户应该认证,并明确之前是不活跃的。如果有人进行密码重置,就需要验证所有活动会话的用户身份。如果一个用户更改核心方面的配置文件或当他们执行敏感的行动,应该提示身份验证或第二因素。并考虑不允许从多个设备或位置登录是否有意义。
当你的服务用户会话到期或需要重复认证,提示用户实时或提供一种机制来保护任何活动来保存未保存的最后验证。用户填写表单,提交它一段时间后,发现他们所有的输入已经丢失,他们必须再次登录,这是非常令人沮丧的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到: QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏0 支持支持0 反对反对0

使用道具 举报

[至尊红钻7级]发帖数量≥50000篇 [未点亮至尊黄钻]威望不足10点 [至尊蓝钻3级]在线时间≥800小时 [至尊绿钻8级]贡献度≥40000点 [至尊紫钻4级]金币≥20000个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 论坛元老
 UID:  27579   [未点亮普号显示]钻石不足3个
 阁 分: 135663
 阁 望: -12433
 阁 献: 57777
 活 跃: 0
 发 贴: 56555 (0)
 阁 币: 46197  
性 别: I'm 火星人!
阅读权限: 90
在线时长: 1309 小时
注册时间: 2023-3-18
最后登录: 2024-5-3
沙发
发表于 2023-8-10 00:21:22 |只看该作者
本回复帖发表于 2023-8-10 00:21:22,感谢Gregoryviowl对本帖的认真回复,你的回复是对楼主莫大的鼓舞

[发帖际遇]:Gregoryviowl 发帖时在路边捡到 2 金钱,偷偷放进了口袋.

使用道具 举报

[至尊红钻7级]发帖数量≥50000篇 [未点亮至尊黄钻]威望不足10点 [至尊蓝钻3级]在线时间≥800小时 [至尊绿钻8级]贡献度≥40000点 [至尊紫钻4级]金币≥20000个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 论坛元老
 UID:  27579   [未点亮普号显示]钻石不足3个
 阁 分: 135663
 阁 望: -12433
 阁 献: 57777
 活 跃: 0
 发 贴: 56555 (0)
 阁 币: 46197  
性 别: I'm 火星人!
阅读权限: 90
在线时长: 1309 小时
注册时间: 2023-3-18
最后登录: 2024-5-3
板凳
发表于 2023-8-10 00:22:26 |只看该作者
本回复帖发表于 2023-8-10 00:22:26,感谢Gregoryviowl对本帖的认真回复,你的回复是对楼主莫大的鼓舞

[发帖际遇]:一个袋子砸在了 Gregoryviowl 头上,Gregoryviowl 赚了 4 金钱.

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、每个贴内连续回复请勿多余3贴,每个版面回复请勿多余10贴!
4、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!

手机版| 百度搜索:vkee.pw

2012-2015 卓航旗下 GMT+8, 2024-5-3 23:37 , Processed in 0.612227 second(s), 32 queries . Powered by Discuz! X3.2  

禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.如遇版权问题,请及时联系站长(QQ:5213513)

今天是: | 本站已经安全运行: //这个地方可以改颜色

快速回复 返回顶部 返回列表