对于用户登录的密码验证的流程怎样靠谱?(不讨论关于https的通道加密)
1.前端明文传递密码到后端进行加密处理,对处理后的密文与数据库做对比返回结果;
2.前端对密码做加密处理传递密文到后端,后端对密文与数据库做对比返回结果;
3.前端对密码做加密处理传递密文到后端,后端解密后得到明文与数据库做对比返回结果;
4.前端对密码做加密处理传递密文1到后端,后端解密后再对明文做其他加密处理,后密文2与数据库做对比返回结果;
5.前端对密码做加密处理传递密文1到后端,后端再对密文1做二次加密处理,后密文2与数据库做对比返回结果;
6.其他恰当方式
考虑关于数据库泄露,数据传输过程中被截获等情景;
求详细流程;
另外请附带加密使用的算法,如RSA,MD5等.
如果中间可以截获请求数据,那你前端只针对密码做的任何加密都相当于做的无用功。因为你后端区分不出来此请求是真正前端发送还是被截获之后的二次请求。
如果后端针对前端传过来的数据不做任何处理,直接比对数据库,那你数据泄露了之后就相当于是裸奔了。
所以,后端加密算法是一定要有的,而且是数据库里存储的是加密之后的数据,对比的是传入password加密之后和数据库做对比。
至于前端,如果前端代码不被破解的话,倒是可以做一次可逆加密(des,aes),把password加密后传给后台,后台进行解密得到password原数据,然后在按照固定算法(不可逆)得到加密后的数据,与数据库进行对比。这样子最少前端代码破解不了,他们截取之后拿到的也是可逆加密之后的密文。