获取“从客户端(&)检测到潜在的危险Request.Path值”

sba*_*y71 4 vb.net rest asp.net-mvc

我有一个REST服务,当我尝试调用名称为的项目时,出现上述错误,如果我未对&进行编码,这将是有意义的

所以这就是我的电话:

http:// localhost:57851 / myService / Servers / myServer / Repositories / myRepository / Models / Mine%26Yours

您会看到“ Mine&Yours”已被编码为“ Mine%26Yours”,因此应该是安全的。

但是该请求正在被接收,好像我没有对其进行编码。

有任何想法吗?

编辑:

这与(获取“从客户端(&)检测到潜在的Request.Path值”)不同。

hol*_*hen 5

无论是否对&符号进行编码,它对ASP.NET都没有影响。看到这个答案:https : //stackoverflow.com/a/12037000/134761

要在URL路径中允许使用特殊字符,您应该像这样修改requestPathInvalidCharacters参数web.config

<httpRuntime requestPathInvalidCharacters="" />
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想允许&但不允许所有其他特殊字符:

<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,\"/>
Run Code Online (Sandbox Code Playgroud)

  • 更安全的方法是完全避免在路径中使用特殊字符:将 URL 的这一部分转换为参数(例如 myRepository?Models=Mine%26Yours)或对特殊字符使用一些自定义编码/解码机制 (2认同)