12.7 密码找回流程绕过测试
12.7.1 测试原理和方法
很多网站的密码找回功能一般有以下几个步骤。
(1)用户输入找回密码的账号;
(2)校验凭证:向用户发送短信验证码或者找回密码链接,用户回填验证码或单击
链接进入密码重置页面,以此方式证明当前操作用户是账号主人;
(3)校验成功进入重置密码页面。
在找回密码逻辑中,第二步校验凭证最为重要。不是账号主人是无法收到校验凭证
的,试想有没有办法可以绕过第二步凭证校验,直接进入第三步重置密码呢?
用户修改密码需要向服务器发送修改密码请求,服务器通过后再修改数据库中相应的
密码,所以在测试中我们首先要收集三个步骤的请求接口,重点是收集到最后一步重置密
码的接口,这样我们可以直接跳过凭证校验的接口去尝试直接重置密码。
在下面的密码找回案例中,需要用户填写要找回的账号然后验证身份,之后才可以进
入设置新密码的页面,我们需要对这个流程所有请求的接口做分析,找出最后一步重置密
码的接口,接着使用 URL 测试是否可以跳过验证身份环节。
12.7.2 测试流程
步骤一:先注册一个自己的账号用于测试所有流程,如图 12-32 所示,在找回密码页
面中先输入自己的账号单击“下一步”按钮,找回密码页面
URL
为
GET/account/findPassword.html。
图 12-32 找回密码流程界面
步骤二:进入凭证验证流程,这里使用的是自己的账号,所以直接获取凭证,输入后
进入下一步,如图
12-33
所示。当前第二步的验证凭证
URL
为
GET/forgetpwd/findPassNext.do。
步骤三:通过验证以后就可以进入第三步重置密码了,如图 12-34 所示。当前重置密
码的 URL 为 GET/forgetpwd/emailValidateNext.do。
图 12-33 第二步发送邮箱凭证验证
图 12-34 第三步重置新密码
步骤四:通过使用自己的账号使用正常顺序流程找回密码成功,我们也获取到了三个
步骤的所有 URL,最后整理如下。
(1)GET/account/findPassword.html//输入用户账号页面
(2)GET/forgetpwd/findPassNext.do//验证身份页面
(3)GET/forgetpwd/emailValidateNext.do//设置新密码页面
接下来可以尝试在第一步输入账号后进入第二步验证身份页面,在这个页面直接修改
URL 为第三步的 URL,访问看看是否可以直接进入密码重置页面,如图 12-35 所示。
图 12-35 第二步发送邮箱凭证验证
经过测试以后发现不需要验证身份可以直接进入重置密码页面,如图 12-36 所示,那
么最重要的验证身份这一步就被轻松绕过了,如图 12-37 所示。
图 12-36 第二步发送邮箱凭证验证
图 12-37 跳过第二部验证修改密码成功
12.7.3 修复建议
防止跳过验证步骤一定要在后端逻辑校验中确认上一步流程已经完成。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论