对于 URL 参数名称中允许使用哪些字符,是否有任何正式限制?
我一直在阅读RFC3986(“统一资源标识符(URI):通用语法”),但没有得出明确的结论。
我知道存在实际限制,但实际上是否会禁止执行以下操作:
参数 with\funny<chars>=some_value
只要我正确地逃脱它:
参数%20with%1cfunny%3cchars%3e=some_value
对于 URL 参数名称中允许使用哪些字符,是否有任何正式限制?
我一直在阅读RFC3986(“统一资源标识符(URI):通用语法”),但没有得出明确的结论。
我知道存在实际限制,但实际上是否会禁止执行以下操作:
参数 with\funny<chars>=some_value
只要我正确地逃脱它:
参数%20with%1cfunny%3cchars%3e=some_value
URI 规范中对转义参数名称没有限制。但是,您使用的服务器端软件可能存在限制。如果您使用“自制”脚本来解释 URI,则尤其如此。
您还应该阅读RFC2396。它似乎比 RFC3986 提供更多信息。
URL 有保留字符,但只要您转义 (urlencode) 就可以了。
根据使用的框架,如果您尝试提交可疑值,您可能会遇到异常。ASP.NET 具有内容过滤功能,如果您尝试提交“不安全”数据(如脚本或 HTML),则会引发异常。这是框架的一个特性,而不是 URL 语法强制执行的限制或规则。
根据RFC 2396,参数名称和值可以包含大写/小写字母、十进制数字和 -_.!~*'() 字符。其他一切都需要逃脱。