http登录模块加密登录安全登录方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37969433/article/details/82343804

http请求很容易被截获,在写登录模块时,直接使用明文密码请求,很容易明文密码泄露;若在js页面对密码进行一次加密后在传输,虽不是明文密码,但也完全可以截获加密后的暗文,伪造http请求进行登录。为了防止密码泄露,通过参考各种方案,找到了以下比较好实现的方法:
1、登录请求分两次进行,第一次仅传用户名
2、服务器收到用户名后,生成一串随机数,将随机数响应给客户端,并将用户名和随机数存到session
3、客户端收到响应后,将密码和随机数安一定的规则组合起来,再md5加密,再http请求(此时保证了每一次登录请求的密码会随随机数的不同而不同,这个随机数为服务器生成,相当于一个公钥,与本次登录操作唯一且一一对应,客户端无法伪造)
4、服务器收到请求,取出session中的用户名和随机数串,核对用户名,再取数据库中的正确密码,再按相同的规则与随机数组合并md5加密,再比较请求的密码暗文,返回登录结果。
附一张更清晰的图,可以看到就算在传输过程的所有信息都暴露出来,也无法根据这些伪造出http请求登录成功。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_37969433/article/details/82343804