用户登录最佳实践(基于慢哈希)

阅读此文章,对于对密码加密技术不是很熟悉的同学,请阅读我的前一篇文章《加密算法应用之密码保护》

https://blog.csdn.net/bjspo/article/details/90057377

 

一、从思想上重视数据安全1

一个健壮的系统应该是:

即使被拿走了数据和所有的代码,也没办法破解里面的数据

这也是为什么大家不必实现自己的加密算法,而是使用公开的加密算法的原因,比如ECCAES3DES SHA等等既然无法保证加密代码不被泄露,那就使用公开的加密算法,只要保护好私钥信息,就算你知道我的加密方式也没有任何帮助

工作重点由原来防止数据泄露,到防止还原数据中

 

用户在客户端输入密码,到网络传输,到服务器数据存储,都使用正确的方法

客户端如何加密用户口令

1.在WEB程序中,永远不要使用明文传输密码

2.客户端钥不要和用户名产生关系,否则黑客会检测用户名是否有效

3.公钥从服务器端获取,客户端和网络传输层无法获取私钥,网络传输层无法解密加密的密码

客户端可以使用:ECC(SHA3_512(password)publicKey)

提示:不要告诉用户用户名是否错误

    不要告诉用户到底是用户名错了,还是密码错了。只需要给出一个大概的提示,比如“无效的用户名或密码”。这可以防止攻击者在不知道密码的情况下,枚举出有效的用户名。

如何保证传输环节口令安全

1.推荐使用HTTPSSSL/TLS

2.使用 HTTP 协议传输数据时,数据都是明文传输的,要保证用户口令数据的加密和被劫持后不可解密。

3.客户端和服务器端使用POST请求

4.服务器端检测来源页面,比如使用请求令牌(防止跨站攻击

5.防止重复提交,比如使用同步令牌

6.恶意脚本检测,过滤SQL注入、跨站脚本(XSS)等一切非法脚本运行...

服务器端如何保存用户口令

客户端用JavaScript加密后,仍然需要在服务端再次加密

    如果后端不做处理,只是对比,那么黑客可以在不知道用户密码的情况下,随意使用任何一个人的账号登陆(重放攻击)

软件加密推荐使用慢哈希算法:bcrypt

    可以有效抵御彩虹表攻击,即使数据泄露,最关键的“用户密码”仍然可以得到有效的保护,黑客无法大批量破解用户密码,从而切断撞库扫号的根源。当然,对于已经泄露的密码,还是需要用户尽快修改密码,不要再使用已泄露的密码。

高安全需要使用硬件加密,选择适合的加密设备

正确保存密码方法:

1.(中高安全)软件加密:加盐慢 hash (含随机数)保存密码  bcrypt(SHA3_512(password))

2.(中高安全)软件加密:加盐慢 hash (含随机数)保存密码,hmacKey存储到其他服务器,只有特定的机器才能获取密钥   bcrypt(hmac(SHA3_512(password),hmacKey))

3.(高安全)硬件加密:专属加密通道,不解密,对比密码是否正确使用硬件加密设备

用户登录最佳实践流程图解

1.6步,为防止DDOS攻击,使用错误次数超过6次锁定,并配合设备登陆检测、异常登录验证等辅助安全措施

2.当服务器端的SESSION超时,客户端使用无效的公钥加密密码上传时,提示错误并重新下发公

3.7步,使用Hmac512(SHA3_512(password),key)进行加密

4.8步,使用

Bcrypt.match(用户密码,数据库存储的Bcrypt)方法对比密码是否正确

如何进行用户密码重置

当用户忘记密码的时候,怎样进行重置

1.如无必要,尽量不要允许用户重置密码

2.通过电子邮件重置密码,需要随机生成一个一次性令牌,将这个令牌混入到一个重置密码的链接中

3.确保令牌只对一个账户有效,令牌有效期尽量短,使用即刻失效。重新请求令牌或登录成功时原令牌立即失效

4.链接中不要体现账户信息,并且只用来服务器端识别数据库中某条用户的记录

5.永远不要通过电子邮件向用户发送新密码

6.用户重置密码的时候随机生成一个新的盐值用于加密,不要重复使用之前密码的那个盐

7.也可以使用短信验证码的方式下发重置密码链接,会比通过SMTP明文传输安全一些

未来主流加密趋势

2015年,支付宝推出8.0版本,新版本推荐用户升级6位数字支付密码,已设置的密码无法切换回原来的复杂密码。

2016年,京东推出6位支付密码

使用硬件加密机,能够彻底防止数据被还原。

未来的加密趋势:

1.传统的MD5SHA1加密会越来越少

2.传统的加盐哈希也会越来越少

3.对于规模和资金都较小的公司,一般使用软件方式加密,如:加盐慢哈希、KEY专属通道、部分数据异地存储等

4.高安全使用硬件加密

5.错误次数锁定、设备登陆检测、异常登录验证、来源URL检测、跨站攻击检测等辅助安全措施越来越普及

本文章在实际工作中的意义

1.当前各个企业都有各类应用系统,用户名、密码登陆几乎涉及到开发的所有部门

2.使用安全的方式进行密码防护,能够保证密码不被破解,提高客户对系统的信任和认可度

3.数据一旦被泄露,从数据的价值方面考虑,公司损失巨大

4.数据一旦被泄露,社会上的舆论对公司的影响巨大

5.密码如果被破解,危害的不仅仅是本系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

bjspo

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值