大家都知道,登录的时候,不能直接用get方式,传递数据,因为get方式会直接把数据加到url请求后面#这样是不安全的#
那反过来?用post就一定安全么?
即使用了post,请求没有直接跟在url上,但是在网络上依然是明文传播的,它依然是不安全的
那怎么办呢?
直接md5加密呗
这样一来即使有人追踪你的网络包,他看到的也只是加密后的数据,没有办法知道你的真实数据#
真的是这样的么?
一半一半吧
因为,常见的密码如root,admin,123456的md5值是可知的,那些黑客可以守株待兔,反向查哪个用户的密码是root,admin,123456等等
所以一半情况下,我们会把用户直接从键盘输入的密码在加上一个特定字符串后再进行md5,这样一来,黑客就算知道我加的那个特定字符串是什么也没办法通过数据包解析出我的真实密码
那业务逻辑层怎么办?
业务逻辑层收到的密码就是
pass_get = MD5(用户键盘上敲得密码+一个特定的字符串)
如果我们的数据库泄露了怎么办?
黑客直接用use_name,pass_get去发请求不照样可以登录么
所以数据库的密码也不能明文存储
pass_db = MD5(pass_get + 每个用户特有的随机字符串)
每个用户特有的随机字符串也保存到数据库里
这样即使你拿到了所有用的pass_db和每个用户特有的随机字符串
你也没有办法解析到pass_get