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

我有一个遗留代码问题,它要求我支持随机 URL,就好像它们是对主页的请求一样。一些 URL 中包含生成错误 "A potentially dangerous Request.Path value was detected from the client (&)"的字符。该站点是用 ASP.Net MVC 3(C #)编写的,运行在 IIS 7.5上。

这里有一个例子 URL..。

http://mywebsite.example/Test123/This_&_That

下面是我如何有我的赶上所有的路线设置(我有其他路线赶上特定的页面) ..。

routes.MapRoute(
"Default", // Route name
"{garb1}/{garb2}", // URL with parameters
new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults
);

我在 web.config文件中添加了以下内容..。

<configuration>
<system.web>
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
<configuration>

我还将 ValidateInput 属性添加到应该捕获 URL 的操作中..。

public class WebsiteController : Controller
{
[ValidateInput(false)]
public ActionResult Home()
{
return View();
}
}

但我还是会出错。知道为什么吗?我错过什么了吗?现在我只是在本地开发服务器上运行(我还没有在生产环境中尝试过这些修复)。

211437 次浏览

尽管您可以在配置文件中尝试这些设置

<system.web>
<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>

我会避免在 URL 路径中使用“ &”这样的字符,用下划线替换它们。

如果希望在 mvc 中只允许很少的文本框使用 Html 标记

你可以做一件事

在控制器中

 [ValidateInput(false)]
public ActionResult CreateNewHtml()  //view
{
return View();
}
[ValidateInput(false)]
[HttpPost]
public ActionResult CreateNewHtml(cbs obj)//view cbs is database class
{
repo.AddHtml(obj);
return View();
}

We were getting this same error in Fiddler when trying to figure out why our Silverlight ArcGIS map viewer wasn't loading the map. 在我们的示例中,这是代码中 URL 中的一个输入错误。出于某种原因,这里有个等号。
http:=//someurltosome/awesome/place
而不是
Http://someurltosome/awesome/place

除去那个等号后,效果很好(当然)。

我曾经面对过这样的错误。 从剃须刀调用函数。

public ActionResult EditorAjax(int id, int? jobId, string type = ""){}

通过改变路线解决了这个问题

来自

<a href="/ScreeningQuestion/EditorAjax/5&jobId=2&type=additional" />

<a href="/ScreeningQuestion/EditorAjax/?id=5&jobId=2&type=additional" />

where my route.config is

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new string[] { "RPMS.Controllers" } // Parameter defaults
);

检查 web.config 文件中是否存在以下行

< system. web > < httpRuntime requestPathInvalidProperties =””/>