1

我是从 InfoSec 方面而不是 AppDev 方面来讨论这个问题的,我只是想先说明这一点。问题是我的 WAF 使用响应阻止了某些图像,HTTP protocol compliance failed:Body in GET or HEAD requests。我需要证明保持这条规则有效,所以我作为非开发人员问:

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

提前感谢大家的帮助。

4

1 回答 1

1

GET 和 HEAD 不发送请求正文,只有 POST 和 PUT 发送(请参阅RFC 2616)您被阻止的另一个原因,正如我经常看到的那样,请求标头之一Content-LengthTransfer-Encoding如果可以容忍真的根本没有请求正文(Content-Length: 0)。当 WAF 找到这些标头时,它会将请求视为具有主体,即使大小为 0。

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