一次 Http Get 请求健壮性问题的排查过程
问题
一个健壮性极好的 Web 服务,当面临暴力请求攻击时,应该具有一定的容错能力。最近,有一个安全项目验收,自己就遇到了相关的问题。因为对应的 Web 服务接口框架参考的是一个开源工程,可能没有经历太多实战的洗礼,这方面就表现的稍微不如人意。
问题细节描述:
对应的点播服务开放了播放列表的查询接口,正常情况下,当 Web 页面访问查询接口时,点播服务返回对应的视频文件播放列表。但是,在进行安全项测试时,测试人员在对应 Get 请求的 URL 中输入了不存在的物理文件地址,接口返回了相应的报错堆栈信息。这种行为是非常不安全!
解决
遇到这个报错时,自己以为是一个很简单的问题,后来的尝试让我明白是自己想简单了。
尝试一
于是,自己想到了把对应的报错捕获不就行了嘛。
代码实例:
但是,结果出人意料,问题依然存在。(最后才明白了,是接口框架的问题)
尝试二
于是想到了在查询接口中去校验 URL 的合理性以及参数的合法性,只允许设置指定参数,如果异常直接返回报错信息。
经过测试,上面的问题确实解决了。
但是,后来的安全测试报告中又提到,如果 URL 后边是一段乱码,问题依然存在。
尝试三
面对上面的问题,自己非常的不解,后来,查看了点播服务处理接口请求部分的代码,发现原来是点播服务响应了所有的接口请求。这样设计的目的是为了解决跨域问题,但是没有想到引入了健壮性问题。
将上述代码改造成接收对应的请求后,问题消失。
结尾
好了,关于 http get 请求健壮性问题的排查过程就介绍完了,欢迎大家关注我,我是 liuzhen007,中国邦德,中国一个会敲代码的邦德。
版权声明: 本文为 InfoQ 作者【liuzhen007】的原创文章。
原文链接:【http://xie.infoq.cn/article/f51e71351cd67ef8846e10ab0】。文章转载请联系作者。
评论 (1 条评论)