跳到主要内容

关于登陆系统中密码校验的问题

今天看了几个关于登陆的问题,突然想到我很久之前做的一个登陆和校验的功能,放在这里梳理下。

首先是注册,绝大部分注册系统中都会让用户填写两次密码以防止手误输入错误,所以都会校验两次输入的密码,这个应该没什么可说的,然后是校验全部通过之后需要提交给后端进行注册,这个提交的过程中绝大部分是用post提交(用get的比较没下限),而且比较安全的方式不是明文传输,而是将密码加密后传输(关于加密我之前写过一篇文章,可以去看下)。然后后端处理有以下处理方式:

  1. 一种是直接存储加密后的数据,甚至可以将加密后的数据二次加密存储,这样安全性比较高,缺点是当用户忘记密码时基本无法找回原密码,只能通过修改密码更新数据库中的密码;
  2. 第二种是将加密后的数据解密后存储,但是这样会导致数据库中明文存下了用户的密码,非常不安全;
  3. 折中的方案是存加密的数据,但是这种加密是可逆的,不管是前端传来的直接存还是解密后换个加密方式重新存,这种方式比较安全,而且也可以找回用户的密码。

不过我当初做的比较奇怪,前端传入加密的数据,后端存的也是加密的数据,这些都比较正常,奇葩的是密码有回填功能。然而后端只给加密的数据,然后前端自己加密后对比,然而因为没有确实的密码,回填的时候连密码位数都不知道,所以我当初做的时候直接回填一个固定长度的特殊字符串,然后那个只能看着玩,并没有实际的用途,回填的数据只要修改就会清空。然后重新输入,因为那个项目是个本地项目,就是说是弱联网的,没网的时候在本地服务器运行,联网的时候的作用只是同步数据,所以有些情况处理也比较特殊,然而这样的密码处理方式还是让我感觉比较奇怪。

Loading Comments...