内容简介:我们的 WAF (Web Application Firewall)是搭建在 nginx 上,使用 lua modules 来实现的。也就是源字符串:openresty的unescape_uri函数处理后结果
我们的 WAF (Web Application Firewall)是搭建在 nginx 上,使用 lua modules 来实现的。也就是 openresty 的 luajit 功能来实现WEB 攻击判断。
问题描述
源字符串:
/aa%20a?openId=%%3Cscript%3E%
openresty的unescape_uri函数处理后结果
/aa a?openId=%3Cscript>
期望的结果:
/aa a?openId=%<script>%
问题现象:
转义不对;丢了百分号。
如何重现
通过浏览器,构造一个包含如上特征的 uri,按回车提交到 nginx? 浏览器会自动把字符串转码吗?转码是按照什么规范来的?IE9、IE10、chrome、safari是分别如何处理的? 习惯用postman的人,知道postman是否会escape uri呢?
如果你忽略了这一点,那么会对你的测试造成很大的影响,耽误时间经历,让你在重试阶段都对问题产生了怀疑。
从HTTP协议角度考虑,只要确保通过协议发送到 http server 的请求中,uri 是符合我们需要的即可。至于浏览器的 escape做法,可以忽略,直接构造 http 协议来重现。
- 重现时,通过浏览器 提交「问题字符串」,在 nginx 层 输出 unescape 后的结果。
- 注意浏览器是否对 URI 进行了 URI_ENCODE,不同浏览器执行的 RFC 标准也不一样。
- 最根本的方式是,跳过浏览器,直接构造 http request 包,确保源字符串完整发送只 nginx。
以上所述就是小编给大家介绍的《openresty的unescape_uri函数处理百分号后面字符的小特性》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- YCProgress自定义百分比进度条
- 如何开发一个百分比饼状图动画
- javascript – 具有百分比宽度的jQuery砖石
- relative 和 absolute 元素的百分比定位
- 技术攻坚,行业落地,百分点大力拓展认知智能蓝图
- 推荐引擎数百分片 Redis 使用时需要注意的事
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beautiful Code
Greg Wilson、Andy Oram / O'Reilly Media / 2007-7-6 / GBP 35.99
In this unique work, leading computer scientists discuss how they found unusual, carefully designed solutions to difficult problems. This book lets the reader look over the shoulder of major coding an......一起来看看 《Beautiful Code》 这本书的介绍吧!