解决“检测到有潜在危险的Request.Form值”

先看如下 web.config 的代码:

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

validateRequest 这句我们知道是关闭验证,也就是说提交带标签,比如 <strong>粗体</strong> 这样的值时,ASP.NET 不会报错。

但在 4.0 中还多了一个 requestValidationMode,这是什么意思呢?

requestValidationMode 有两个值:

  • 2.0仅对网页启用请求验证。是启用还是关闭取决于 validateRequest。
  • 4.0 默认值。任何 HTTP 请求都会启用请求验证,也就是说不光是网页,还包括 Cookie 等。此时强制启用,不管 validateRequest 为何值。

由于 requestValidationMode="4.0" 是强制启用,所以我们会发现在 .NET Framework 4.0 中仅靠设置 validateRequest 是关闭不了请求验证的,还得将 requestValidationMode 设置为 2.0。

ASP.NET中的请求验证特性提供了某一等级的保护措施防止XSS攻击,之前版本的ASP.NET的请求验证是默认启动的,但是他紧紧应用于ASP.NET页面中(.aspx文件和.aspx.cs文件)。

而在ASP.NET4中,请求验证默认对所有类型的请求启动,因为它在BeginRequest被调用之前启动,结果就是对所有资源的请求都要经过请求验证,而不仅仅在.aspx文件和他们的类文件中,甚至包括web service和自定义的httphandler。同样,在自定义httpmodules读取http请求的时候,同样要经过请求验证。

上述原因引发的最终结果就是在ASP.NET4中会引发请求错误,例如检测到有潜在危险的Request.Form值等等,为了解决这个问题,可以通过将验证模式设置为ASP.NET之前的版本。具体步骤是在web.config中加入以下配置:

<httpRuntime requestValidationMode=”2.0″ />

设置了请求模式后,再设置

<system.web>
<pages validaterequest=”false”/>
</system.web>

MVC框架中,在控制方法前加入:

[ValidateInput(false)]属性。

时间: 2024-08-01 15:54:58

解决“检测到有潜在危险的Request.Form值”的相关文章

WebAPI.请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式 从客户端xx中检测到有潜在危险的Request.Form值

事故现场 报错"从客户端 中检测到有潜在危险的Request.Form值" //后台代码 namespace Test { [RoutePrefix("TestClass")] [EnableCors("*", "*", "*")] public class TestClassController { [HttpGet] [Route("GetByName/{userId}/{userName}&

从客户端中检测到有潜在危险的 request.form值[解决方法]

当页面编辑或运行提交时,出现"从客户端中检测到有潜在危险的request.form值"问题,该怎么办呢?如下图所示: 从客户端中检测到有潜在危险的 request 下面博主汇总出现这种错误的几种解决方法: 问题原因:由于在asp.net中,Request提交时出现有html代码或javascript等字符串时,程序系统会认为其具有潜在危险的值.环境配置会报出"从客户端 中检测到有潜在危险的Request.Form值"这样的Error. 1.当前提交页面,添加代码 打

从客户端中检测到有潜在危险的Request.Form值 的解决方法

在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的.这个给出各个版本.net的解决方法. asp.net 2.0 通常解决办法 方案一: 将.aspx文件中的page项添加ValidateRequest="false" ,如下: <%@ Page ValidateRequest=&quo

MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法

今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...")中检测到有潜在危险的Request.Form 值.说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击.若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMo

从客户端中检测到有潜在危险的Request.Form值的解决方法

描述:从客户端中检测到有潜在危险的Request.Form值的解决方法asp.net 2.0 通常解决办法将.aspx文件中的page项添加ValidateRequest="false"或者修改配置文件 <system.web> <pages validateRequest="false" > </pages> </system.web> 从客户端中检测到有潜在危险的Request.Form值的解决方法

解决asp.net中“从客户端中检测到有潜在危险的Request.Form值”的问题

在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的.这个给出各个版本.net的解决方法.asp.net 2.0 通常解决办法方案一:将.aspx文件中的page项添加ValidateRequest="false" ,如下:<%@ Page ValidateRequest="fa

【异常记录(七)】MVC:从客户端中检测到有潜在危险的 Request.Form 值 的解决方法 [转]

从客户端(Content="<EM ><STRONG ><U >这是测试这...")中检测到有潜在危险的Request.Form 值. 说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击. 若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为requestValidationMode=&qu

ashx页面 “检测到有潜在危险的 Request.Form 值”的解决方法(控制单个处理程序不检测html标签)

如题: 使用web.config的configuration/location节点. 在configuration节点内新建一个location节点,注意这个节点和system.webserver那些是平级节点 然后使用location/@path 来指定某个单独的文件,这个文件可以是aspx也可以是ashx,更加可以是Razor模板的cshtml(当然MVC有Unvalidated方法,用不到这样), 然后在location下面配置page和httpruntime(4.0)节的属性就OK了.这

解决从客户端(Content=&quot;&lt;div&gt;&lt;p &gt;&lt;p&gt;12312...&quot;)中检测到有潜在危险的Request.Form 值。

[HttpPost] [ValidateInput(false)]//解决从客户端(Content="<div><p ><p>12312...")中检测到有潜在危险的Request.Form 值. public ActionResult EditInfo() { return View(); } 原文地址:https://www.cnblogs.com/SeNaiTes/p/8966551.html