最近项目接口被爆出有安全性问题,扣了我10块钱工资,原因是因为前端向后端传输的身份证是BASE64加密参数。
这是一个身份证查询公积金的接口。
因为BASE64是可以直接解密的。于是为了了解安全性问题这两天研究了一下。
加密
加密算法主要分为
1无密钥加密,如:BASE64
2有密钥加密,如:AES
3不对称密钥加密,如:RSA
请问以上能保住我10块钱的前端向后端传输的加密方式是那个呢?
答:都不行
因为各种从前端加密的方式都可以在前端看到密钥
因为前端代码是放在用户浏览器上的,是公开的
各种加密只能防止数据在传输的途中受保护,这一点HTTPS同样可以保护。
所以加密只能防止一些小鬼,如果真的有人想要破解,只是加密是没有用的
所以前端传输数据到后台的安全方法是:不传敏感信息
比如:对接微信时,微信给你的数据不是用户的身份证,而是用户的ID
用户ID代替了身份证来使用,而其他接口的入参也不是用户身份证,而是ID
这样就解决了敏感信息的安全问题,用别人的不知道的参数来代替敏感参数,而敏感参数在不公开的情况下与代替参数关联
但是如果必须传输敏感信息时又如何呢?
比如我们有时候需要得到用户的电话号码。微信是如何做的?
竟然不能防止事情发生,于是微信进行了 管控
每个向微信要求手机号的系统都需要注册关联,实名认证
每次向微信要求手机号的系统都需要用户同意,明确责任
每次得到手机号都会被微信记录,可以追述
如果微信察觉到某个系统有问题,也可以关闭系统的获取手机号的权力