“从客户端(%)检测到一个潜在危险的Request.Path值。”但请求似乎没问题

时间:2011-06-15 16:50:23

标签: asp.net-mvc request-validation

ASP.Net MVC 3.0,.NET 4.0,IIS 7

我知道有很多次被问过,但我仍然无法弄清楚它有什么问题。

我偶尔会收到这些邮件(每天不到1条),而且每天访问量大约为4k。

以下是错误报告的链接:
http://wowreforge.com/elmah.axd/detail?id=6CBE6DCA-88C2-45E7-AF53-A53061B8E25D

(注意有XML和JSON详细报告的链接)

首先要注意的是URL(PATH)包含UTF-8编码字符:/ US / Warsong / Spartan%C3%B6
第二件事,请求是 HEAD ,而不是 GET
我认为,这些细节都不会导致我收到的错误。

原始网址为:
http://wowreforge.com/US/Warsong/Spartan%C3%B6?reforge=--52145254126214646464--3214325254&crit=7&dodge=90&exp=19&haste=1&hit=10&mastery=100&parry=67&spi=0

我已尝试使用GET和HEAD请求此网址,但无法重现错误。

还有什么我可以捅的?

1 个答案:

答案 0 :(得分:0)

请注意PATH_TRANSLATED = E:\web\wowreforgec\htdocs\EU\Kael%27Thas\Acekhor。在查找磁盘上文件的路径之前,看起来URL编码字符%27未被转换为'default configuration of the RequestPathInvalidCharacters属性禁止%字符,因此输入被认为是危险的并且抛出异常。

修改

HttpUtility.UrlDecode(string s)方法应将/EU/Kael%27Thas/Acekhor转换为/EU/Kael'Thas/Acekhor。应该在将虚拟路径解析为物理路径的点处调用此方法(或类似函数之一)。您是否使用自定义方法将虚拟路径转换为物理路径?