最近有网友给锤锤投稿,说他们项目组的产品经理,在新软件项目中,对密码需求分析草草了事。上线后,用户反馈密码设置规则不清晰,找回密码流程繁琐,还出现安全漏洞,导致用户体验极差,项目陷入困境。那今天就给大家讲讲,关于密码的基础知识。
什么是密码
密码是一种用于保护信息安全的技术手段,通常由一组字符、数字或符号组成。它可以用于验证用户的身份、保护敏感信息、控制访问权限等。
因此,做好密码风险防范至关重要。密码的安全性直接关系到用户的个人信息安全、企业的商业机密安全以及整个信息系统的稳定运行。
密码不能明文储存
如果密码以明文形式存储,将带来极大的安全风险:
-
社会工程学:
社会工程学是一种利用人的心理弱点、本能反应、好奇心、信任、贪婪等心理特征,通过欺骗、诱导等手段,获取信息、访问权限或进行其他恶意活动的方法。
最常见的一个行为就是:人们会倾向于多系统采用一个密码,更容易记忆。
-
内部人员恶意窃取:
如果内部人员存在恶意行为,他们可以轻松获取明文密码,从而导致用户信息泄露。内部人员可能会将密码出售给第三方,或者利用密码进行非法活动。
-
系统漏洞:
由于系统漏洞等原因,数据库中的明文密码可能会被意外泄露。
例如:软件漏洞、配置错误、拖库或安全策略不当都可能导致密码泄露。
MD5 + 盐
MD5 + 盐是一种增强密码安全性的存储方式,其原理如下:
-
生成盐值:
当用户注册时,系统首先生成一个随机的盐值。盐值应该具有足够的随机性和长度,以确保安全性。
-
拼接密码和盐值:
将用户输入的密码与生成的盐值拼接在一起。
-
进行 MD5 哈希计算:
使用 MD5 哈希算法对拼接后的字符串进行计算,得到一个哈希值。
-
存储盐值和哈希值:
将盐值和哈希值一起存储在数据库中。
这种存储方式的优势在于:
-
增加破解难度:
即使多个用户使用相同的密码,由于盐值不同,最终得到的哈希值也会不同。这大大增加了攻击者通过哈希值反推原始密码的难度。
-
防止彩虹表攻击(也被称为词典攻击):
彩虹表是一种预先计算好的哈希值与原始密码对应关系的表。使用盐值后,每个用户的盐值不同,即使攻击者有彩虹表,也很难直接破解出原始密码。
忘记密码的处理
忘记密码一般有以下五种处理方式
1.不显示密码的取回方式:
为了确保密码的安全性,当用户忘记密码时,系统不能直接显示用户的密码。而是通过另外的渠道帮助用户取回密码。
2.邮箱激活链接:
系统可以向用户注册时提供的邮箱发送激活链接。用户点击链接后,可以进入密码重置页面,设置新的密码。但这个方法并不是万全之法。这种方式需要确保邮箱的安全性,防止邮箱被黑客攻击或恶意窃取。
3.二次身份验证(2FA):
2FA 是什么:
2FA 即双因素身份验证,是一种在用户输入密码后,还需要提供另一种身份验证因素的安全机制。常见的 2FA 方式包括短信验证码、手机应用生成的动态验证码、硬件令牌、生物信息验证等。生物信息验证的方式有:面部识别、指纹识别、虹膜识别。
著名的“7pay”事故:
2019 年 7 月 1 日,日本 7-11 公司推出 “7pay” 无现金智能手机支付应用程序,但很快就遭遇了第三方非法入侵。黑客利用该应用程序密码重置功能的严重安全漏洞,盗用了用户账户。
由于密码重置链接可以被发到任意第三方电子邮箱,且没有二次验证,黑客只需要找到原账户持有人的电子邮件地址、出生日期和电话号码等信息,就可以重置密码并盗用账户。据报道,约 900 名用户合计损失约 5500 万日元(约合人民币 350 万元)。
4.系统内修改密码
用户在登录系统后,可以在系统设置中修改密码。为了确保安全性,系统通常会要求用户输入旧密码进行验证,然后再设置新密码。因为登录后系统可能会被其他人触碰到。
所以2FA提供了更加安全的操作,例如,用户在登录时,除了输入密码外,还需要输入手机短信收到的验证码或手机应用生成的动态验证码,验证是本人后才能成功登录。
5.重置密码
用户可以通过系统提供的密码重置功能,设置新的密码。在重置密码过程中,系统通常会要求用户提供一些额外的信息,以确认用户的身份。例如,回答安全问题、提供注册时使用的手机号码等。
系统请求的返回值中不应该包含密码字段,避免密码被截取系统传输应该采用 HTTPS,以增加保护。
写在最后
对于从事业务分析(BA)工作的人员来说,掌握密码安全的基础知识非常重要。
BA 人员需要了解密码在系统中的作用、密码存储的风险以及安全的存储方式。他们还需要与开发团队合作,确保系统的密码安全策略得到有效实施。
业务流程设计不合理,无数次返工是否让你怀疑人生?
缺乏清晰的业务逻辑设计,拿到需求无从下手?
未能有效管理非功能性需求,导致系统性能不达标?
设计时未考虑系统间的数据互操作性差,导致差评无数?
10年+老产品的锦囊秘籍——可视化需求分析工具箱!
从需求编辑、阅读、查错、纠错、响应变更等多个角度出发进行设计。
历经数年研发,根据产品经理实际工作难点、并针对不同类型的需求和场景,设计的一套可直接应用的工具方法论。
开箱即用!按照场景类别分类总结而成,为产品经理量身定制,可以根据场景选用,方便快捷。
从编写、阅读、查错、纠错、变更等多个角度设计,充分经过大量案例验证。
覆盖到各种常见的需求场景,例如UI类、流程类、定时任务类、逻辑类等。
帮助产品经理事半功倍的编写需求文档,帮助你快速上手需求分析!