3.7 关联
3.7.1 关联原理
先来模拟一个场景:我们去坐飞机,登机前需要在检票点出示机票,检票登机。那么检票人员会检查哪些东西呢?机票是否真实、航班是否正确等信息,验证通过即可登机。
过了几天我们又去坐飞机,还是拿同样的一张票去登机,检票人员再一次核对信息,发现机票已经过期了,自然就不能成功登机了,那怎么才能顺利登机呢?可以通过伪造机票信息的方式来登机,首先去询问其他乘客的机票信息,然后将自己的机票涂改为他们的机票,最后使用涂改后的机票登机。
在这里我们通过收集别人返回的信息,将提交给检票人员的数据修改为这些收集到的信息,从而满足登机的验证策略。在脚本中也存在大量类似的情况,录制的时候,服务器会给一个唯一的认证码来进行操作,当再次回放脚本的时候服务器会给一个全新的认证码,而脚本录制是死的,还是拿老的认证码提交,从而导致脚本执行失败。
例如:常见系统中的登录功能,在登录后服务器会返回SessionID,登录后的操作都需要提交该SessionID确认身份。使用VuGen录制时,将会记录服务器返回的SessionID并且原封不动地在下一个请求中发给服务器,如图3.127所示。
图3.127 录制得到SessionlD
待到回放的时候,服务器会在接收到用户名和密码后返回新的SessionID,而脚本仍然发送旧的SessionID给服务器,最终因SessionID错误,导致脚本回放失败,如图3.128所示。
图3.128 回放时SessionID 错误