登录不加密
明文 用户名+密码登录。
1、问题:用户密码等隐私泄露
解决:隐私信息加密
方案:RSA非对称加密:客户端用公钥对密码加密;服务器用私钥解密
2、问题:请求参数金额额被篡改
解决:MD5加密
方案:客户端将用户名和金额拼一个字符串然后用MD5加密生成字符串s1传给服务器;服务器用也将用户名和金额拼一个字符串生成加密后的字符串s2,判断前端s1是否等于s2,不想等说明被篡改。
3、问题:MD5可以暴力正向推算然后撞库
解决:再给MD5加盐
方案:客户端将用户名和金额和固定字符串盐值“aaa”拼一个字符串然后用MD5加密生成字符串s1传给服务器;服务器用也将用户名和金额和固定字符串盐值“aaa”拼一个字符串生成加密后的字符串s2,判断前端s1是否等于s2,不想等说明被篡改。
4、问题:黑客拦截了url路径和SESSIONID等所有请求信息,模拟重复发请求,重复支付
解决:SESSIONID改为SESSIONID+TOKEN。不可控制,TOKEN程序可以控制。token里面包含时间戳设置超时时间甚至一次失效
方案:
1、用户名+密码+时间戳 ,然后md5生成token。
2、将token放到redis设置超时时间(ex)
3、将token用RSA公钥加密返给客户端
4、客户端支付时将token传给服务器支付接口,我们在支付做个拦截,即拦截器
5、拦截器RSA解密token,然后做token的有效性校验,比如token在redis是否存在。
6、如果需要更高的安全性,token用一次失效,那就校验完将token从redis删除即可。
拦截器前置判断token有效性