写点什么

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

用户头像
liuzhen007
关注
发布于: 2021 年 08 月 05 日
脚本测试服务器处理URL非法传参

问题


解决


结尾

问题

当我们想要验证某个 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,中国邦德,中国一个会敲代码的邦德,欢迎大家关注我。


发布于: 2021 年 08 月 05 日阅读数: 8
用户头像

liuzhen007

关注

敲代码,搞开发。 2021.05.01 加入

本人深耕音视频技术,走全栈路线,前后端通吃,兼顾各端与流媒体服务器。 博客主页地址:https://liuzhen.blog.csdn.net 微信公众号:玩转音视频 欢迎交流学习!

评论 (1 条评论)

发布
用户头像
8月日更第三天!
2021 年 08 月 05 日 20:46
回复
没有更多了
脚本测试服务器处理URL非法传参