Java秒杀

目录

 

1 登陆模块

注册:

  1. 用户填写账号密码,点击注册
  2. 前端使用一个固定的salt值拼接到密码上
  3. 前端使用md5加密拼接后的密码
  4. 把拼接加密后的内容发送给后端
  5. 后端再随机生成一个salt值,再次拼接到密码上
  6. 后端把密码和那个随机生成的salt值都存到数据库里

登录:

  1. 用户提交密码,
  2. 前端使用一个固定的salt值拼接到密码上
  3. 前端使用md5加密拼接后的密码
  4. 把拼接加密后的内容发送给后端
  5. 后端从数据库里取出账号对应的密码 和 注册时生成的salt值
  6. 匹配 数据库中的密码 是否等于 前端传递的密码+salt值

两次MD5加密:出于安全考虑

第一次 (在前端加密,客户端):密码加密是(明文密码+固定盐值)生成md5用于传输,目的,由于http是明文传输,当输入密码若直接发送服务端验证,此时被截取将直接获取到明文密码,获取用户信息。

加盐值是为了混淆密码,原则就是明文密码不能在网络上传输。

第二次:在服务端再次加密,当获取到前端发送来的密码后。通过MD5(密码+随机盐值)再次生成密码后存入数据库。

防止数据库被盗的情况下,通过md5反查,查获用户密码。方法是盐值会在用户登陆的时候随机生成,并存在数据库中,这个时候就会获取到。

第二次的目的:
黑客若是同时黑掉数据库,通过解析前端js文件,知道如果md5加密的过程,就知道此时用户的密码。

但是此时我们要是在后端加入随机盐值和传输密码的md5组合,黑客是无法知道通过后端密码加密过程的,从而无法知道密码。

两次为什么一个固定,一个随机的salt:

因为登陆时需要从数据库中进行匹配,数据库可以保存随机salt值,进行解密所以可以用随机的salt。

 

 

 

 

 

 

 

 

 

 

 

 

 

0

你可能感兴趣的:(Java秒杀)