ASP.Net MVC:从客户端检测到具有潜在危险的 Request.Files 值

ASP.Net MVC : A potentially dangerous Request.Files value was detected from the client

我在我的 asp.net 页面上传了一个文件,文件名为 "Ex&#_17.pdf" 然后在后端使用 Request.Files[0] 获取文件时出现以下错误。

从客户端(文件名="Ex&#_17.pdf")检测到一个潜在危险的 Request.Files 值

如果我将文件名更改为以下类型,那么它工作正常。

我认为只有文件名中的 &# 被视为具有潜在危险。

所以,我的问题是,是否有任何其他特殊字符会产生此错误。

我用谷歌搜索了这个错误,但一无所获。

您使用 HTML special characters

的语法

&#... 是 html 编码标记集。我建议更改它。

默认情况下,MVC 会尝试检测发送到服务器的可疑值,从而导致“从客户端检测到潜在危险值。”错误。

例如,您不能在文本输入中发送 <script>alert('hello');</script>。有关类似错误,请参阅 ASP.NET MVC A potentially dangerous Request.Form value was detected from the client when using a custom modelbinder

因为&#___;可以用来引用一个HTML Entity, the filename Ex&#_17.pdf is suspect. Here is a chart of these codes (thanks Train): The HTML Coded Character Set

您可以禁用文件上传验证:

  • 我不确定在 ViewModel 中使用 [AllowHtml] 属性 HttpPostedFileBase 属性 是否可行。

  • 你也可以尝试用[ValidateInput(false)]标记Action方法。

或者按照 phonemyatt 的建议,使用客户端 JavaScript 在文件名中删除或编码可疑字符,然后再发布。