Web API: 检测到来自客户端的潜在危险的 Request.Path 值。

12 浏览
0 Comments

Web API: 检测到来自客户端的潜在危险的 Request.Path 值。

所以我在我的ASP.NET Web API项目中有一个端点需要接受特殊字符(例如%<>)来验证系统中名称的唯一性。所以对于以下路由:\n

[Route("~/api/case/{name}/infosys/{system}")]

\n... {name} 可能包含特殊字符。对于仅限此端点,有没有办法告诉Web API允许特殊字符而不会出现以下错误:\n

HttpException (0x80004005): 从客户端检测到一个潜在危险的Request.Path值(%)。

\n注意:这是一个Web API项目,因此不可用[ValidateInput(false)][AllowHtmlAttribute]修饰符。另外,我不想通过修改我的Web.config来放宽其他端点的限制:\n

No

...
No

...
No

0
0 Comments

(Web API: A potentially dangerous Request.Path value was detected from the client)问题的出现的原因以及解决方法

在使用Web API时,有时候会遇到一个错误消息:"A potentially dangerous Request.Path value was detected from the client"(从客户端检测到一个潜在危险的请求路径值)。这个错误消息通常出现在尝试请求一个带有特殊字符的路径时。

这个错误的原因是ASP.NET对请求路径中的特殊字符进行了安全检查,以防止潜在的跨站点脚本(XSS)攻击。当ASP.NET检测到请求路径中包含可能危险的字符时,就会抛出这个错误。

解决这个问题的方法是修改Web.config文件中的httpRuntime节点的requestPathInvalidCharacters属性。这个属性定义了不被允许在请求路径中使用的特殊字符。

下面是一个示例的Web.config文件中的httpRuntime节点的修改代码:

在这个示例中,我们将requestPathInvalidCharacters属性的值设置为"&lt;,&gt;,*,%,&amp;,\,?",这样就允许请求路径中使用这些特殊字符了。

通过修改Web.config文件中的httpRuntime节点的requestPathInvalidCharacters属性,我们可以解决(Web API: A potentially dangerous Request.Path value was detected from the client)这个问题,让Web API接受包含特殊字符的请求路径。

0