后端应该如何安全地储存用户数据-转自知乎

学到一招,加盐哈希

我自己项目用的是MD5,真心学到了,原文如下

加盐哈希是目前业界最常见的做法。

加盐哈希的步骤如下:

  • 用户注册时,给他随机生成一段字符串,这段字符串就是盐(Salt)
  • 把用户注册输入的密码和盐拼接在一起,叫做加盐密码
  • 对加盐密码进行哈希,并把结果和盐都储存起来

在登陆时,先取出盐,再同样进行拼接、计算哈希,就能判断密码的合法性。

加盐哈希的做法,既保证了储存数据的不可逆,又防止了上一章的彩虹表攻击方式。这种方式下,黑客拿到数据库后,如果再要用遍历所有常用的密码组合的方式做彩虹表,那他需要对所有常用密码+盐值进行哈希运算。而每个用户的盐值都不相同,之前彩虹表的「一次运算无数次使用」变成了「一次运算一次使用」。这样的成本是难以接受的,由于前提3(攻击成本远高于收益,系统达到相对安全),所以这是一个比较安全的做法。

除了密码,还有别的信息

除了密码以外,手机号等信息也是重要的隐私数据。但手机号与密码不同:对于后端来说,永远不知道密码的明文也不会对业务逻辑造成影响;而后端可能需要明文的手机号,在一些情况下给用户发送短信。

对于手机号这种信息,只能用相对安全的做法,即先对手机号进行对称加密,再将加密结果储存在数据库里;使用时再用密钥解开。

这时密钥不应该被保存在数据库里。如果数据库被拖库,那么些数据的安全性与明文无异。通常会将密钥以环境变量的形式放在服务器上。这时除非网站在被拖库的情况下同时被拿到服务器权限,否则手机号的明文就不会被泄露出去。


原地址:大家可以去看下

后端应该如何安全地储存用户数据? - kindJeff的文章 - 知乎https://zhuanlan.zhihu.com/p/38057805


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值