用户重置密码安全验证(被国家机构抓包检测总结的经验)

本文章仅用作参考(本人小白一个,如各位大牛有更好的方法,或者思路欢迎评论区留言讨论!)
1.编写这篇博客的原因是为了,今后在做别的功能,也是为了今后能多考虑一下系统安全,去编写代码!

场景:公司是做法律服务系统的,因为系统比较老旧,之前的功能坏掉了,所以就要求重新去维护一下之前的重置密码功能。

业务:其中有个重置密码的功能是信息核实的,这个信息核实就是,先填写要操作的用户账号如果系统中存在该用户账号进入下一步,填写一下用户的一个执业号码和身份信息去进行验证(ps:问题所在),前台使用异步操作进行ajax携带参数执业信息和身份信息和用户账号,请求后台,后台进行数据库操作查询该用户的身份信息和执业信息和前台传入的是否一致(ps:可能现在和我一样的小白都觉得没有什么问题,当时我也觉得没有问题)如果一致进行验证通过,返回code值 1前台ajax成功函数判断code==1,前台进入下一步修改密码页面。

问题:这个问题的所在就是,在第二步的时候,别人检测的时候就直接在第二步绕过去了,别人可能不知道身份信息,就把身份信息乱填一通,通过了格式的校验去请求后台可能后台返回的code不是1,但是别人抓取了请求把code 改成了1直接进入第三步,进行密码重置,因为第二步没有存入什么信息,进行第三步的时候没有经过验证是否这个用户是正常通过第二步的。就导致密码修改成功!

解决方案:在不大幅度的更改代码的情况下,我们增加了逻辑,在填写验证身份信息是否通过的时候,后台代码加入了token的赋值返回code==1,在跳入用户修改密码页面的时候,填写完修改的密码请求后台,进行token验证看看是否存在token,验证token的信息是否正确。

token实现思路:得到这个用户id传入toke生成方法,传入用户id,令牌类型,首先判断是否传入用户,令牌类型,令牌状态(失效,启用),如果参数传入创建token(ps:这边的token实现是创建了一个token表进行存储token),设置token的拥有者是该用户,令牌类型,生效时间,失效时间,token等级,token名称,是否失效,存入session,session键名是随便一个前缀+用户id,值就是创建token生成的id。在修改密码的页面验证token的思路就是根据键名取session中的token,如果token未取到提示校验失败,如果去掉判断token的拥有者和传入的用户是否匹配,不匹配就失败,如果匹配检验token是否超过失效时间如果超出,重新验证用户信息,否则修改token的状态设为已经使用,是否失效设为失效。跳入修改密码页面。

总结:在操作重要信息前要做,操作前后的校验,做功能前要多考虑下安全性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值