基础要求
1.合法性,即 是他自己登录的账号(做法:token + https ,token验证可以确定操作源是该用户本人,https可以在很大程度上保证token在传输的过程中不被截获篡改,是目前较为安全的一种做法)
2.唯一性,即 不能对同一个账号重复登录(做法:服务器保存生成的token后再将其发送给用户,每次用户请求数据时,先验证token是否相同,然后再验证token是否有效。相同,则说明用户唯一,有效则说明用户合法。注意:就算传入token和数据库中的token相同,也不能说明用户合法,因为数据库中的token可能已经过期无效了,如果token过期就让用户重新登录,然后再次签发和保存token。ps:token必须具有时效性,否则用户数据被破解只是时间问题)
进阶要求
1.后端设置 更换新设备需要短信或手机验证(做法:保存UserAgent到数据库,全局对比用户当前UserAgent和数据库保存的UserAgent,如有不同,就要求用户验证。缺点:UserAgent只能大致作为参考,不能作为更换设备的依据,更不能用来针对爬虫攻击)
2.后端设置 登录频率和次数限制(记录用户上次登录时间,连续登录5次后需要等待10分钟,且每天最多登录10次,token过期时间可设置为1天)
3.前端设置 密码输入错误次数限制,连续输入3次错误弹出验证码.
4.后端设置 密码修改需要短信或邮箱验证
5.根据url、Accept_language、IP 判断是否异地登陆,然后要求短信或邮箱验证(此方法可靠性一般)