软件测试 | 使用 WebScarab 观察实时的 POST 数据
问题
POST 请求是用于提交复杂表单最常见的方法。不同于 GET 取值,我们无法仅通过查看网页浏览器窗口顶部的 URL 来得知所有被传递的参数。参数经由连接从我们的浏览器被传送到服务器。所以,我们必须使用工具人来观察输入。
这项测试可以帮助你辨别输入,包括隐藏域和由运行在网页浏览器中的 JavaScript 计算得到的值。了解各种各样的输入类型(比如整数,URL,HTML 格式的文本)之后,你就能够构造合适的安全测试用例或误用案例。
解决方案
POST 数据可能很难懂,原因在于许多站点会在自己接收数据之后将你重定向到另一个页面。POST 数据可以很有用,当你按“后退”按钮时,它阻止你两次提交相同的表单。不过,这种重定向使我们很难直接在 Firebug 中抓取 POST 数据,所以这里我们将尝试另一件工具:WebScarab。
WebScarab 需要你调整 Firefox 设置,如图 3-7 所示。一旦将其配置好用于截获数据,它就可以用在本章所有的秘诀中。它的功能如此强大,我们强烈推荐你使用它。
要配置 Firefox 以便使用 WebScarsb,请按以下步骤操作:
1.启动 WebScarab
2.从菜单栏中选择“工具”→“选项”(Windows,Liunx),或者在 Mac OS 中按下(命令键+逗号)以激活 Firedox 首选项菜单如图 3-7 所示。
3.选择“高级”选项卡,然后选择其中的“网络”选项卡。
4.在这里,单击“设置”,并手动设置到 localhost 的代理,端口是 8008.
5.将这个代理服务器应用到所有协议。
然后,可以按下步骤使用 WebScarab 来观察 POST 数据;
1.浏览到某个使用 POST 表单的页面。你可以通过查看页面源代码并查找特定 HTML 标签的方法来标识出别样的表单。如果你找到<from>标签,请查找 method 参数。如果显示 method=“post”,那么这就是使用 POST 数据的表单。
2.在表单中输入一些简单信息并提交。
3.切换到 WebScarab,你应该会看到若干个条目显示这你最近的几个页面请求。
你可以在图 3-8 中看到 WebScarab 所获取的信息。
双击将方法(Method)设定为 POST 的任一请求。你将会看到这个页面请求的所有细节。在请求头下面,你会找到一段内容,它包含所有的 POST 变量及其取值。
这些头信息与请求头遵循相同的格式,仅仅是“名称一值”对,但它们是由服务器而不是浏览器来设置的。举个例子,请看图 3-9 的底部,那里显示了 URL 编码的 POST 数据。
讨论
WebScarab 是一件功能强大的工具。作为代理,它能够揭示在你的浏览器和 Web 服务器之间所有可以被看到的内容,这不同于 Firebug,后者会在你每次单击链接时重置。WebScarab 会保持记录,直到被关闭。你可以保存这种历史,以便重新提交 HTTP 请求(修改其中的某些取值)。其实,使用 WebScarab,你可以观察并更改 Web 服务器发送给你的一切内容。
图 3-9:WebScarab 知道你在 POST 中隐藏的信息
这证明,POST 数据虽然比查询字符串或 Cookie 数据(这两者都可以从请求头中找到)要稍微难找些,但它的提取、更改和重新提交也不难完成。正如应用永远也不应该相信查询字符串中的数据那样,同样的道理也适用于 POST 数据,甚至是隐藏表单域。
警告:
如果你试图浏览器受 SSL 保护的页面,WebScarab 导致浏览器弹出各种各样的警告。这些警告指出,你正在访问的网站的加密签名是不正确的。这是可以预见到的,因为 WebScarab 正在截获请求。不要将这种警告(使用工具的结果)与你的网站上 SSL 或加密不工作的提示相混淆。如果你禁用了 WebScarab 之后确仍然看到 SSL 错误,那么你才应该担心。
同样滴地,如果配置 WebScarab 用作代理,那么 FTP 请求将完全失效。
Firefox 有个附加组件称作 SwitchProxy(https://addons.mozilla.org/en-US/firefox/addon/125),它允许你在使用 WebScarab 这样的代理和使用另一个代理(比如,你公司的代理)或者完全不适用代理之间切换。如果你的正常环境需要你使用代理,那么 SwitchProxy 就特别方便,因为手动切换非常不方便。
评论