某一天,突然之间WAF防火墙报了很多漏洞,都是如下提示:
阻止缺失Content-Type字段的HTTP请求的漏洞
那么我们大概先了解下什么是Content-Type
?
MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。 MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。
类似如下请求类型:
- application/x-www-form-urlencoded
- application/json
- multipart/form-data
- text/plain
- …
也就是说,我们的请求理论上都会带这个值的,比如我们的ajax请求一般都会默认带:application/x-www-form-urlencoded,但是如果传的参数是在太复杂,可能需要带:application/json.
比如;Content-Type 被指定为 application/x-www-form-urlencoded;那么提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。
好了,不跑题,那么阻止缺失Content-Type字段的HTTP请求的漏洞是啥意思呢,很明显就是没有呗!只要我们找到没有的原因即可。
什么时候Content-Type会没有
1、GET请求
因为GET请求参数都放在后面,所以根本不需要指定Content-Type
2、POST请求,但是没有参数
跟我我的测试,比如ajax的POST请求,理论上默认是application/x-www-form-urlencoded,但是如果你的data:{}不加任何参数的话,也会没有的。
好了,解决办法就是去找到你的ajax调用的地方,若是没有参数的话就加上a:1就可以啦,当然加别的也可以。反正要保证有参数!