软件测试 | 使用以 URL 方式编码的数据
问题
URL 编码的数据使用 %字符和十六进制数字来传送 URL 中不允许直接使用的字符。空格、尖括号(<和>)和斜线(斜线分隔符号/)是几个常见的例子。如果你在 Web 应用中看到 URL 编码的数据(或许是在参、输入或某些原源代码中),而且需要理解或处理它,那么必须对它进行解码或编码。
解决方案
最简单的方法是使用 OWASP 的 CAL9000。它是一些列 HTML 网页,使用 JavaScript 来执行基本计算。它提供了一种交互的方式来复制或粘贴数据,以及任何地进行编码或解码。
编码
在“Plain Text”框中输入解码后的数据,然后单击“Select Encoding Type”下方左侧的“Url(%XX)”按钮。
解码
在“Encoded Text”框中输入编码数据,然后单击“Select Decoding Type”下方左侧的“Url(%XX)”选项。
讨论
对于任何查看过 HTML 源代码或从网页浏览器发送到 Web 服务器的任何后台数据的人来说,URL 编码的数据都是不陌生的。RFC1738(ftp://ftp.isi.edu/in-notes/rfc11738.txt)定义了 URL 编码,但它不要求明确的 ASCII 字符的编码。注意,尽管并非必须,但对这些字符进行不必要的编码并没用错。图 4-3 中的编码数据显示了一个这样的例子。实际上,冗余编码是攻击者用来掩饰其恶意输入的一种方式。不成熟的黑名单会检查<script>,甚至是 %3script%3e,但可能不会检查 %3c%73%63%72%69%70%74%3e,尽管它们实质上全部都是一样的。
CAL9000 的一大优势在于,它实际上并不是软件。它是一组内嵌有 JavaScript 的网页。即使你的 IT 策略超级严格,你根本无法在自己的工作站上安装任何东西,你仍然可以使用浏览器从本地硬盘中打开这些网页,而它们就能够供你使用。你可以简单地将它们装载到 USB 驱动器中,并直接从该驱动器中加载它们,这样你根本不需要安装任何东西。
评论