【问题标题】:Why shouldn't we allow body in a GET or HEAD request?为什么我们不应该在 GET 或 HEAD 请求中允许 body?
【发布时间】:2020-03-30 20:01:34
【问题描述】:

我是从 InfoSec 方面而不是 AppDev 方面来讨论这个问题的,我只是想先说明这一点。问题是我的 WAF 使用响应阻止了某些图像,HTTP 协议合规性失败:GET 或 HEAD 请求中的正文。我需要证明保持这条规则有效,所以我作为非开发者问:

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

提前感谢大家的帮助。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2023-01-23
      • 2012-05-26
      • 2020-06-23
      • 2010-12-10
      相关资源
      最近更新 更多