25

对于 URL 参数名称中允许使用哪些字符,是否有任何正式限制?

我一直在阅读RFC3986(“统一资源标识符(URI):通用语法”),但没有得出明确的结论。

我知道存在实际限制,但实际上是否会禁止执行以下操作:

参数 with\funny<chars>=some_value

只要我正确地逃脱它:

参数%20with%1cfunny%3cchars%3e=some_value
4

4 回答 4

12

URI 规范中对转义参数名称没有限制。但是,您使用的服务器端软件可能存在限制。如果您使用“自制”脚本来解释 URI,则尤其如此。

于 2009-05-02T11:38:49.847 回答
8

您还应该阅读RFC2396。它似乎比 RFC3986 提供更多信息。

于 2009-05-02T12:16:45.433 回答
2

URL 有保留字符,但只要您转义 (urlencode) 就可以了。

根据使用的框架,如果您尝试提交可疑值,您可能会遇到异常。ASP.NET 具有内容过滤功能,如果您尝试提交“不安全”数据(如脚本或 HTML),则会引发异常。这是框架的一个特性,而不是 URL 语法强制执行的限制或规则。

于 2009-05-02T11:37:16.653 回答
1

根据RFC 2396,参数名称和值可以包含大写/小写字母、十进制数字和 -_.!~*'() 字符。其他一切都需要逃脱。

于 2020-02-24T21:31:58.763 回答