脚本测试服务器处理URL非法传参

举报
liuzhen007 发表于 2021/08/05 20:58:59 2021/08/05
【摘要】 问题解决结尾 问题当我们想要验证某个web服务如何处理非法URL传参时,需要使用一定的方法,不可能一条测试用例一条测试用例的去手动尝试,这样既浪费时间,效率还低。有没有什么好方法吗?这就是我们今天想要讨论的问题。 解决解决这个问题,其实就是使用一定的自动化手段来实现 Restful API 测试工作。说到自动化测试工具,我们可以想到 PostMan、APIPost、JMeter 等,学习工具...

问题

解决

结尾

问题

当我们想要验证某个web服务如何处理非法URL传参时,需要使用一定的方法,不可能一条测试用例一条测试用例的去手动尝试,这样既浪费时间,效率还低。有没有什么好方法吗?这就是我们今天想要讨论的问题。

解决

解决这个问题,其实就是使用一定的自动化手段来实现 Restful API 测试工作。说到自动化测试工具,我们可以想到 PostMan、APIPost、JMeter 等,学习工具的使用需要一定时间成本,有没有别的推荐的方法呢?答案是有的。如果你 shell 脚本写的非常溜的话,完全可以自己手撸一个自动化测试脚本。

首先,我们拆解一下这个问题,如果想要实现这个自动化测试脚本,我们需要做三件事儿。

其一、选择 http 请求的发送工具,我们这里选择 curl 工具。curl 是我们经常使用的网络测试工具之一,它的功能非常强大,命令行参数多达几十种。如果使用熟练的话,完全可以取代 Postman、APIPost 等图形界面工具。

其二、模拟 URL 非法参数,我们这里使用 /dev/urandom 和 head 工具。/dev/urandom 是 linux 系统中生成伪随机数的工具,head 是用来控制 URL 参数显示的。

其三、快速实现 API 接口测试,我们使用了大循环和低休眠的方案来控制请求发送。

按照上面提到的三部分内容,我们实现了非常简单的测试脚本,具体编码如下:

    #!/bin/bash
    step=1 # 增加步幅
    wait=0.1 # 间隔的秒数
    for((i=0;i<6000;i=(i+step)));do
    	ran=$(cat /dev/urandom | head -n 10 | head -c 10)
    	echo $ran
        curl http://172.31.232.99:3000/$ran
        sleep $wait
    done;
    exit 0

为了直观的显示我们模拟的 URL 参数长成什么样子,我们在 console 中将它们打印出来,执行脚本,命令如下:

sh url_test.sh

测试运行结果:(由于内容太多,只列出一部分输出内容)


!???h? ?e?

curl: (3) URL using bad/illegal format or missing URL

?????H?m

curl: (3) URL using bad/illegal format or missing URL

=?????9

curl: (3) URL using bad/illegal format or missing URL

curl: (3) URL using bad/illegal format or missing URL

-@V??r:

curl: (3) URL using bad/illegal format or missing URL

L?%??'?Ӥ?

<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"><title></title><link rel="stylesheet" href="/layui/css/layui.css"><link rel="stylesheet" href="/stylesheets/style.css"></head><body class="gray"><div class="layui-header header"><div class="layui-main"><a href="/" class="logo">返回首页</a></div></div><div class="layui-container mt-20"><div class="layui-row layui-col-space20"><div class="layui-col-md12"><h1>Failed to decode param '/LÐ%†´'ˆÓ¤â'</h1><h2></h2><pre></pre></div></div></div><script src="/javascripts/jquery.min.js"></script><script src="/layui/layui.js"></script><script src="/javascripts/cms.js"></script></body></html>?q??6??

curl: (3) URL using bad/illegal format or missing URL

"?????? p

curl: (3) URL using bad/illegal format or missing URL

其实,curl 工具本身也会自己过滤一部分非法的 URL 参数请求,并不是所有携带 URL 参数的请求都会发出去。

至此,我们的自动化测试脚本就搞定了,而且运行效果也非常满意,快速高效,还不需要人工干预。脚本执行完毕后,我们从服务器端查看报错日志即可。

如果有漏洞,我们根据日志内容进行修复就行啦,完美!

结尾

好了,今天关于模拟 URL 参数请求的自动化脚本就介绍完啦,是不是非常简单。我是 liuzhen007,中国邦德,中国一个会敲代码的邦德,欢迎大家关注我。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。