URL 路径中一段的安全最大长度应该是多少?

What is a safe maximum length a segment in a URL path should be?

很多人在问"What is the maximum length a URL can be?"但据我所知没有人问这个问题:

What is a safe maximum length a segment in a URL path should be?

我觉得这个问题同样重要。

这个问题是一个一般性问题,旨在支持尽可能多的开箱即用系统。

在 C# 中,您可以从传入请求中获取 URL 路径段的列表,安装了安全模块后,URL 路径中的段的最大长度可以用于此场景?

我在下一页读到 URL 超过 260 个字符的路径段可能会导致自定义 ASP.NET 模块出现问题:

在网络浏览器中,无论您访问什么网站,您都键入 URL 段,/ 是通常映射到主页的 URL 路径段。 Internet Explorer、Chrome 和 Firefox 是流行的浏览器,它们支持的 URL 路径段长度的最大长度是多少?

我从下面的资源可以看出,URL 路径的最大长度因浏览器而异,有时这个数字很高:

但这是路径而不是路径段。

我还知道在重写路径时,底层文件系统路径长度开始发挥作用,我所看到的支持的大概数字是 *nix OS 中大约 255 个字符。

其他注意事项包括数据库中 URL 路径段的最大长度 table。例如,在 MySQL 中,一个 varchar 列最多可以包含 255 个字符,但是是否存在这种情况,人们是在 table 中存储路径段还是在 MySQL 中存储varchar 列中的完整 URL?这是否意味着 255 个字符对于 URL 路径段来说太长了?

是否有任何关于 URL 路径段可以有多长的 W3C 规范,因为我无法发现任何东西?

我确实阅读了关于 URI 的 W3C 规范,但我还是没有发现任何有用的东西:

我很困惑,URL 路径段的长度没有固定标准,所以也许我遗漏了什么?

我真的在寻找尽可能多的关于不同系统支持的信息,以及什么被认为是 URL 路径段的安全长度。

没有这样的规格限制。可能存在 实施 限制,但您不会在规范中找到这些限制。

Nit:URI 由 IETF 而非 W3C 定义,当前规范为 RFC 3986。

URL length shouldn't exceed 2K (just common practice). The segment path可以是任意大小

长度不应超过 255 个字符(参见 RFC3986)。限制仅在实施时存在。 附加到 URL 的段 仅在特定情况下受到限制(旧的常用用法)。

现在几乎所有请求都通过 rewrite rule 的一个文件,因此段长度无关紧要。 之后,段保存在一个变量中,可以很大,所以基本上没有限制。

可能与 What is the maximum length of a URL in different browsers?

相关

简而言之

根据 HTTP 规范,URL 的长度没有限制。将 URL 保持在 2048 个字符以内;这将确保 URLs 在所有客户端和服务器配置中工作。此外,像 URL 这样的搜索引擎将保持在大约 2000 个字符以下。

Chrome 对 URL 有 2MB 的限制,IE8 和 9 有 2084 个字符的限制。所以一切都指向将你的 URL 限制在大约。 2000 个字符。

此外,从可用性的角度来看,URL用户不会 usable/readable 这么长。

但是,域名有一个最大值。长度为 255 个字符。 所以为了安全起见,最大。 URL 段的长度约为 1745 个字符,假设您的 URL 存在于 1 个段中。