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