asp.net 4中的潜在危险请求

时间:2012-11-30 00:04:07

标签: c# .net

我在ASP NET 4中遇到以下错误:

A potentially dangerous Request.Path value was detected from the client (<).

我已经读过我需要在我的Web.config中使用requestValidationMode =“2.0”:

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime requestValidationMode="2.0" />
</system.web>

所以我的方法如下:

[ValidateInput(false)]
public ActionResult Search(string query, string type){

//method body

return result;
}

效果很好。但是,我无法修改我的Web.config文件,因为许多其他应用程序依赖于此文件,它可能会导致安全漏洞或其他地方的错误。

我的应用程序足够安全,可以接受特殊字符,但我不能对正在开发的系统的其余部分说同样的话。 在我的方法中是否有接受特殊字符作为输入的替代方法?

示例:

www.mydomain.com/search/query/<myquery<ffoo/type/dept

1 个答案:

答案 0 :(得分:1)

我在当前的项目中遇到了同样的问题。我将发布我必须添加的内容以便纠正这个问题。还要记住,.NET 4.0中有一个错误,可以使用它。 Net 2.0我的Project是3.5但是我认为IIS AppPool他们有我们的项目运行4.0

我在我的网络配置文件中添加了这个,它纠正了我遇到的奇怪错误

<httpRuntime requestValidationMode="2.0"
   requestPathInvalidCharacters="*,:,&amp;,\"
   relaxedUrlToFileSystemMapping="true"
/>

对于MVC,您可以尝试以下

using System.Web.Helpers;

[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(ContentTemplateView contentTemplateView)
{
    FormCollection collection = new FormCollection(Request.Unvalidated().Form);