从客户端中检测到有潜在危险的Request.Form值的解决方法
2014-02-28 09:39
495 查看
本文来自:http://www.cnblogs.com/allon6318/archive/2013/05/28/3103453.html
使用VS2010开发WEB系统时,ASP.NET请求验证功能可以为我们自动辨别来自客户端提交的数据,避免站点受到XSS的攻击。但是在一些特殊情况下,比如我们使用富文本编辑器让用户输入一篇新闻,新闻内容包括文字,图片等,还有排版格式等,当客户端将文本内容提交给服务器时,服务器如果辨识出文本中包含有一些不被允许的特殊字符或者标签,将阻止内容的提交。但是这部分内容是用户的“合法输入内容”,这时候的请求验证势必是多余的。所以为了应对这种问题,我们可以采用以下处理方式。
第一种情况:WEB应用程序开发中
(1)在全局配置文件webconfig中添加配置:<httpRuntime requestValidateMode="2.0">
比如:
[align=left]<system.web>[/align]
[align=left] < httpRuntime requestValidationMode ="2.0 " />[/align]
[align=left]</system.web>[/align]
(2)在包含有富文本编辑器页面上添加属性:ValidateRequest="false"
比如:
[align=left]<% @ Page ValidateRequest="false" %>[/align]
第二种情况:MVC应用程序开发中
(1)在全局配置文件webconfig中添加配置:<httpRuntime requestValidateMode="2.0">
比如:
[align=left]< system.web>[/align]
[align=left] < httpRuntime requestValidationMode = "2.0 " />[/align]
[align=left]</ system.web>[/align]
(2)在包含有富文本编辑器的视图对应的Controll中添加属性:ValidateInput(false)
比如:
[align=left][ HttpPost][/align]
[align=left][ ValidateInput(false )][/align]
[align=left]public ActionResult NewsEdit( FormCollection form)[/align]
[align=left]{}[/align]
[align=left] [/align]
[align=left]备注:上面的开发环境是VS2010,ASP.NET 4.0,MVC3.0。[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left]下面文字来自:/article/2048096.html[/align]
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。
作者:永恒の_☆ 地址:/article/2048096.html
在 .NET MVC 的项目中有用到百度编辑器的富文本框,然后 提交表单到后台报错:
从客户端(Content="<p>测试</p>")中检测到有潜在危险的 Request.Form 值。
一看就知道是传递的字符串中包含了html 标签,然后服务器检查出来了没有通过,所以需要来做处理。
网上有多例子说 在<pages>标签中加上validateRequest=“false”这个属性就好了,代码如下:
[html] view plaincopyprint?
<system.web >
<pages validateRequest="false" ></pages >
</system.web >
但是根本不起作用。。
之后在别的地方看到特别的,针对MVC项目的处理方式不一样。
需要再方法前面 加上[ValidateInput(false)] 过滤掉 用户传递的输入的验证,例子如下:
[csharp] view plaincopyprint?
[HttpPost]
[ValidateInput(false)]
public ActionResult Add(User user)
{
return View();
}
然后发现还是不行,原来自己用的是MVC3.0 ,需要再UI 目录下的web.config 中配置一下, 即在<system.web>中指定验证模式为2.0 ,代码如下:
[html] view plaincopyprint?
<system.web >
<httpRuntime requestValidationMode="2.0" />
</system.web >
这是因为3.0的验证模式非常严格,即使加上了[ValidateInput(false)] 也过滤不了。。。所以 才要在web.config 中配置一下。
特别地,如果放在Views 目录下的web.config 中会没有效果的。
使用VS2010开发WEB系统时,ASP.NET请求验证功能可以为我们自动辨别来自客户端提交的数据,避免站点受到XSS的攻击。但是在一些特殊情况下,比如我们使用富文本编辑器让用户输入一篇新闻,新闻内容包括文字,图片等,还有排版格式等,当客户端将文本内容提交给服务器时,服务器如果辨识出文本中包含有一些不被允许的特殊字符或者标签,将阻止内容的提交。但是这部分内容是用户的“合法输入内容”,这时候的请求验证势必是多余的。所以为了应对这种问题,我们可以采用以下处理方式。
第一种情况:WEB应用程序开发中
(1)在全局配置文件webconfig中添加配置:<httpRuntime requestValidateMode="2.0">
比如:
[align=left]<system.web>[/align]
[align=left] < httpRuntime requestValidationMode ="2.0 " />[/align]
[align=left]</system.web>[/align]
(2)在包含有富文本编辑器页面上添加属性:ValidateRequest="false"
比如:
[align=left]<% @ Page ValidateRequest="false" %>[/align]
第二种情况:MVC应用程序开发中
(1)在全局配置文件webconfig中添加配置:<httpRuntime requestValidateMode="2.0">
比如:
[align=left]< system.web>[/align]
[align=left] < httpRuntime requestValidationMode = "2.0 " />[/align]
[align=left]</ system.web>[/align]
(2)在包含有富文本编辑器的视图对应的Controll中添加属性:ValidateInput(false)
比如:
[align=left][ HttpPost][/align]
[align=left][ ValidateInput(false )][/align]
[align=left]public ActionResult NewsEdit( FormCollection form)[/align]
[align=left]{}[/align]
[align=left] [/align]
[align=left]备注:上面的开发环境是VS2010,ASP.NET 4.0,MVC3.0。[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left]下面文字来自:/article/2048096.html[/align]
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。
作者:永恒の_☆ 地址:/article/2048096.html
在 .NET MVC 的项目中有用到百度编辑器的富文本框,然后 提交表单到后台报错:
从客户端(Content="<p>测试</p>")中检测到有潜在危险的 Request.Form 值。
一看就知道是传递的字符串中包含了html 标签,然后服务器检查出来了没有通过,所以需要来做处理。
网上有多例子说 在<pages>标签中加上validateRequest=“false”这个属性就好了,代码如下:
[html] view plaincopyprint?
<system.web >
<pages validateRequest="false" ></pages >
</system.web >
但是根本不起作用。。
之后在别的地方看到特别的,针对MVC项目的处理方式不一样。
需要再方法前面 加上[ValidateInput(false)] 过滤掉 用户传递的输入的验证,例子如下:
[csharp] view plaincopyprint?
[HttpPost]
[ValidateInput(false)]
public ActionResult Add(User user)
{
return View();
}
然后发现还是不行,原来自己用的是MVC3.0 ,需要再UI 目录下的web.config 中配置一下, 即在<system.web>中指定验证模式为2.0 ,代码如下:
[html] view plaincopyprint?
<system.web >
<httpRuntime requestValidationMode="2.0" />
</system.web >
这是因为3.0的验证模式非常严格,即使加上了[ValidateInput(false)] 也过滤不了。。。所以 才要在web.config 中配置一下。
特别地,如果放在Views 目录下的web.config 中会没有效果的。
相关文章推荐
- 从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法
- MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法
- 木其工作室代写程序 [原]从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法
- iwms后台出现从客户端(ctl00$cphMain$logo="<img src="pic/logo.g...")中检测到有潜在危险的 Request.Form 值。错误解决方法
- 从客户端中检测到有潜在危险的 Request.Form 值的问题的解决方法。
- iwms后台出现从客户端(ctl00$cphMain$logo="<img src="pic/logo.g...")中检测到有潜在危险的 Request.Form 值。错误解决方法
- 验证视图状态 MAC 失败,从客户端检测到有潜在危险的Request.Form值的解决方法
- 从客户端中检测到有潜在危险的Request.Form值的解决方法
- .NET MVC从客户端中检测到有潜在危险的 Request.Form 值 的解决方法
- 从客户端中检测到有潜在危险的Request.Form值的解决方法
- MVC:从客户端中检测到有潜在危险的 Request.Form 值 的解决方法
- 从客户端中检测到有潜在危险的 Request.Form 值解决方法
- "从客户端检测到有潜在危险的Request.Form 值" 解决方法
- 在Mvc中碰到从客户端中检测到有潜在危险的 Request.Form 值 的解决方法
- 从客户端(fck...)中检测到有潜在危险的 Request.Form 值,解决方法
- 从客户端中检测到有潜在危险的Request.Form值 的解决方法
- 从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法
- 异常“从客户端...中检测到有潜在危险的Request.Form 值”的解决方法
- 出现“从客户端xxx中检测到有潜在危险的 Request.Form 值“的解决方法
- 从客户端(fck...)中检测到有潜在危险的 Request.Form 值,解决方法