您的位置:首页 > 理论基础 > 计算机网络

动态网页性能测试必备基础之熟悉Http Session

2016-04-29 12:32 417 查看
任何一个学习过计算机基础的人,都应该知道HTTP是无状态的。HTTP最早是伴随静态网页诞生的,所以对于静态网页来说,也不需要有状态。但是在互联网时代,讲究用户动态交互和数据隐私,基本上所有网络应用程序,都是需要强会话状态控制的,Http Session是广泛使用的会话状态控制技术。

为了让门外汉们(如果你不是,请直接略过此段)更好的理解Http Session,举例来说明。一个动态网站可以说是一个虚拟的服务组织,你要进去办点事,是不是要先通过门卫(你可能已经想到了“登录”),门卫确认你是个好人后给你个通行许可,你才可以通过大门去办事,等你办完事了离开了,通行许可也就失效了(如果你想到了“登录”,自然也想到这里是“退出”或者“注销”或者“会话超时”了)。你下次来的时候还得重新申请许可(这里忽略许可有效期限超过一次的情形),拿着上次失效的许可肯定是不行的,当然别人也不能拿着你的许可就能冒充你,Session其实起到类似的作用,用来唯一标识和保护每个通过浏览器访问网站的用户身份和数据安全。

动态网站性能测试中,普遍使用录制的模式来记录用户的操作行为,通过回放来自动模拟并重复用户的行为。如果是静态网页,只要请求的网页资源网站没有删除,录制完回放肯定就能通过;如果是动态网页,回放前录制脚本中的访问许可随着录制操作的结束,可能已经失效了,直接回放相当于你拿着过期的许可申请资源或者别人冒用你的名义申请资源,一般网站不会告诉你是非法的会话或者具体哪里不对(没有这么傻的网站,还教你去搞死它),你只会得到HTTP 4XX或者5XX的错误,也可能是2XX或3XX的结果,这取决于网站管理者的安全控制策略和异常处理模式。所以你想要测试脚本能重复你录制的行为,就得先向网站证明代表你的测试脚本是个好人,每次回放先出示你好人的身份,按规定去申请合法的许可,这种处理在性能测试中一般大家都叫关联。动态网站的测试,学会做关联是基础之基础。要学会做关联,首先得理解Http
Session的一些通用实现方式,你才能知道怎么去证明自己的身份,从哪里领取合法的许可,怎么提交许可去获取资源。

Http Session的实现方式常见的有三种,为了更高的安全性,还有很多花样百出的方式,这里不做深入探讨,以保护网站开发者的智慧,如果你确实感兴趣,去学习学习渗透测试,就能略窥一二了。

基于CooKie的会话控制:最老套的方式,现在用的比较少了,因为兼容性和安全性不是很好,就是在用户浏览器中写入一条Cookie信息,每次通过读取Cookie信息来判断用户的身份和行为。
基于URL重写:将会话标识追加到浏览器发出的每个请求的URL中,兼容性较好,一些商业系统用的比较多。
基于隐藏的表单域字段:通过在响应体中植入隐藏字段,发出请求时在请求消息体中包涵隐藏字段的值来实现,数据安全性要求高的应用中广泛使用。

如何确定是通过何种方式进行Session控制的,有Web开发经验的人通过查看请求响应,很快就能知道,那么没有经验的人如何才能知道呢?有两种方式,询问网站的开发者或者通过对比录制和回放响应结果的差异来分析,相同的操作,重复进行两次,得到两个响应结果,从响应结果最先出现差异的地方入手,很快就能猜测出控制Session标识的字段。

如果你已经确认是基于Cookie的会话控制,在HyperPacer中模拟会话很简单,直接在测试场景下添加个“HTTP Cookie管理器”,就能自动实现会话模拟了;如果是基于URL重写的,你可以通过正则表达式或者CSS/JQuery提取器,从最开始发出请求的响应中提取合法的会话标识,通过变量替换的方式替换掉后面所有请求中的硬编码的Session标识;基于隐藏的表单域字段的处理同URL重写,但是一般表单都有数据合规性等业务规则的校验,判断和提取相对复杂,取决于你对表单涉及业务控制规则的理解,这属于业务域的范围了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: