【问题标题】:What is the limit on QueryString / GET / URL parametersQueryString / GET / URL 参数的限制是什么
【发布时间】:2011-03-06 17:03:01
【问题描述】:

QueryString / GET / URL 参数有什么限制

【问题讨论】:

标签: http query-string


【解决方案1】:

理论上没有限制。对于 HTTP URL,HTTP 1.1 specification 声明:

HTTP 协议对长度没有任何先验限制 一个 URI。服务器必须能够处理它们所使用的任何资源的 URI 服务,并且应该能够处理无限长度的 URI,如果它们 提供可以生成此类 URI 的基于 GET 的表单。一台服务器 如果 URI 较长,则应返回 414(Request-URI Too Long)状态 超出服务器的处理能力(参见第 10.4.15 节)。

但在实践中,许多客户端和服务器只支持一定长度的 URL。 rule of thumb is not to use URLs longer than 2000 characters(已考虑百分比编码)。

【讨论】:

  • 您知道有此限制的主要(常用)组件列表吗?
  • @Thomas 不,很遗憾没有。
  • 链接的文章很好地概述了不同的浏览器/系统如何处理这个问题(尽管已经过时)。
  • 链接的文章链接到贷款网站,完全不相关编辑:似乎该域是去年年底购买/接管的
  • 更新了网页存档版本的链接
【解决方案2】:

虽然官方没有 RFC 2616 规定的限制,但许多安全协议和建议规定服务器上的 maxQueryStrings 应设置为最大字符数限制 1024。而整个 URL(包括查询字符串)应设置为最多 2048 个字符。这是为了防止 Web 服务器上的慢速 HTTP 请求 DDOS 漏洞。这通常显示为 Qualys Web Application Scanner 和其他安全扫描程序上的漏洞。

请参阅以下带有 Web.config 的 Windows IIS 服务器的示例代码:

这也适用于使用 machine.config 的服务器级别。

注意:限制查询字符串和 URL 长度可能无法完全阻止慢速 HTTP 请求 DDOS 攻击,但这是您可以采取的一种预防措施。

【讨论】:

    【解决方案3】:

    没有明确的限制。但是,RFC 2068 指出:

    HTTP 协议对 URI 的长度没有任何先验限制。服务器必须能够处理它们所服务的任何资源的 URI,并且如果它们提供可以生成此类 URI 的基于 GET 的表单,则应该能够处理无限长度的 URI。如果 URI 比服务器可以处理的长(参见第 10.4.15 节),服务器应该返回 414(Request-URI Too Long)状态。注意:服务器应谨慎使用超过 255 字节的 URI 长度,因为一些较旧的客户端或代理实现可能无法正确支持这些长度。

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多