REST、IIS、特殊字符和requestPathInvalidCharacters

REST、IIS、特殊字符和requestPathInvalidCharacters,iis,Iis,我在处理RESTURI中的特殊字符时遇到问题。我们需要处理特殊字符的原因是,URI可以引用一个ID,该ID可能包含一个特殊字符,例如: http://myServer/v1/myResource/123 对于API的消费者来说,我们目前的解决方案并不容易,因为特殊字符需要进行双重编码。因此,对于上述情况,URI将如下所示: http://myServer/v1/myResource/123%253Cabc%253E 我希望我们能做得更好,还有两个问题 (1) 为什么单编码URI还不够呢。具体来

我在处理RESTURI中的特殊字符时遇到问题。我们需要处理特殊字符的原因是,URI可以引用一个ID,该ID可能包含一个特殊字符,例如:

http://myServer/v1/myResource/123

对于API的消费者来说,我们目前的解决方案并不容易,因为特殊字符需要进行双重编码。因此,对于上述情况,URI将如下所示:

http://myServer/v1/myResource/123%253Cabc%253E
我希望我们能做得更好,还有两个问题

(1) 为什么单编码URI还不够呢。具体来说,如果我将URI更改为以下内容:

http://myServer/v1/myResource/123%3Cabc%3E
然后我得到了一个错误:

A potentially dangerous Request.Path value was detected from the client (<)
发生这种情况的部分原因是,有些东西对URI的解码有些过早。有趣的是,当我在与RESTWeb服务器相同的机器上尝试URI时,这确实可以正常工作。也就是说,只有当REST请求来自远程机器时,“过早”URI解码才会发生

(2) requestPathInvalidCharacters

通过将requestPathInvalidCharacters设置为空字符串,大多数字符只需要进行单编码。这对我们来说是一个合理的解决方案,尽管我还不能确定这是否会给我们带来任何安全问题。据我所知,它不是,因为这个web服务器将只用于REST。然而,我不确定

设置requestPathInvalidCharacters是否会在仅使用REST API时引发任何安全问题?如果是,您能否提供一个可能存在安全问题的示例

提前感谢,, 埃里克