安全

安全传输和存储用户密码

如何安全传输存储用户密码

1、安全传输密码

比如,https完全就是建立在证书可信的基础上的。如果遇到中间人伪造证书,一旦客户端通过验证,安全性顿时就没了! 平时各种钓鱼不可描述的网站,很可能就是黑客在诱导用户安装它们的伪造证书!通过伪造证书,https也是可能被抓包的哦。

1.2、对称加密算法

既然使用了https协议传输用户密码,还是「不一定安全」,那么,我们就给用户密码「加密再传输」呗~

加密算法有「对称加密」和「非对称加密」两大类。用哪种类型的加密算法「靠谱」呢?

对称加密:加密和解密使用「相同密钥」的加密算法。

对称加密

常用的对称加密算法主要有以下几种:

常用的对称加密算法

如果使用对称加密算法,需要考虑「密钥如何给到对方」,如果密钥还是网络传输给对方,传输过程,被中间人拿到的话,也是有风险的哦。

再考虑一下非对称加密算法呢?

「非对称加密:」非对称加密算法需要两个密钥(公开密钥和私有密钥)。 公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有对应的私钥才能解密。

非对称加密

常用的非对称加密算法主要有以下几种:

常用的非对称加密算法

如果使用非对称加密算法,也需要考虑「密钥公钥如何给到对方」, 如果公钥还是网络传输给对方,传输过程,被中间人拿到的话,会有什么问题呢? 「他们是不是可以伪造公钥,把伪造的公钥给客户端, 然后,用自己的私钥等公钥加密的数据过来?」 大家可以思考下这个问题哈~

我们直接「登录一下百度」,抓下接口请求,验证一发大厂是怎么加密的。可以发现有获取公钥接口,如下:

再看下登录接口,发现就是RSA算法,RSA就是「非对称加密算法」。其实百度前端是用了JavaScript库「jsencrypt」,在github的star还挺多的。

百度登录接口RSA非对称加密

因此,我们可以用「https + 非对称加密算法(如RSA)」 传输用户密码~

3、总结

  • 一般使用https 协议 + 非对称加密算法(如RSA)来传输用户密码,为了更加安全,可以在前端构造一下随机因子。
  • 使用BCrypt + 盐存储用户密码。
  • 在感知到暴力破解危害的时候,「开启短信验证、图形验证码、账号暂时锁定」等防御机制来抵御暴力破解。

参考资料