为什么我们不应该在GET或HEAD请求中允许正文?

时间:2019-12-05 20:23:07

标签: http get head f5 web-application-firewall

我是从InfoSec方面而不是AppDev方面来的,我只是想首先说明一下。问题是我的WAF正在阻止带有响应的某些图像, HTTP协议合规性失败:GET或HEAD请求中的正文。我需要证明保持该规则有效,所以我要问作为非开发人员:

  1. 是因为这是GET和HEAD请求的规则而被阻止了,还是我们可以在GET和HEAD请求中允许使用Body,但这真的不是一个好主意吗?
  2. 为什么这不是一个好主意?允许在GET或HEAD请求中使用Body会引起什么潜在的问题?

预先感谢大家的帮助。

1 个答案:

答案 0 :(得分:0)

GET和HEAD不会发送请求正文,只有POST和PUT会发送请求正文(请参见RFC 2616) 由于我经常看到的另一个原因,您被阻止了,因为请求标头 Content-Length Transfer-Encoding 中的一个,如果确实没有请求正文,可以容忍全部( Content-Length:0 )。当WAF找到这些标头时,它会将请求视为具有一个正文,甚至大小为0。

  1. 如果放宽该策略,则将允许合法流量,但也为GET / PUT上的异常流量打开了大门。为了避免这种情况,您可以添加iRule或LTM策略以删除GET / PUT上的标头,直到F5发布更好的软件版本以在主体大小为0时不阻止流量。
  2. 当有漏洞的Web服务器将缓冲在GET / HEAD主体中发送的数据而不是返回400错误并忽略数据时,就会出现潜在的问题。这些数据可能会导致内存消耗,或将黑客的数据注入到合法用户的请求中,而此时结果未知。如果您对自己的Web服务器有信心,则可以放宽WAF政策。