ASP.NET 在请求中检测到有潜在危险的 Request.Form 值。
2015-06-10 16:19
549 查看
说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" / >。设置此值后,可通过在 Page 指令或 <pages > 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=153133。
原以为就像普通的Asp.net页面一样,在头部的Page中加入ValidateRequest="false"就行了,谁知问题还是存在。弄了一个上午,问题终于解决,将解决方法汇总如下:
1,在出现该错误的页面头部的page中加入ValidateRequest="false",那么该页面的任何一次Post提交都不会再验证提交内容的安全性。
如:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Manage/ViewMasterPageEdit.Master" Inherits="System.Web.Mvc.ViewPage<MvcWebPhoto.Models.Entities.Article >"
ValidateRequest="false" % >
2,在web.config中的pages节中配置validateRequest="false",如:
<system.web >
<pages validateRequest="false" ></pages >
</system.web >
但这样,整个项目中的所有Form请求都不再验证提交内容的安全性,极不提倡这种做法。
3,如果你使用的是.Net 3.5,MVC 2.0及更高的版本,那么可以在处理Post方法的Action添加一个特性:[ValidateInput(false)],这样处理就更加有针对性,提高页面的安全性。
如:
[HttpPost]
[ValidateInput(false)]
public ActionResult CatalogEdit(Catalog model)
{
return View();
}
重要:
如果你使用的是MVC 3.0,那么你会发现做了以上的设置后还是无效。这是因为你还需要在web.config中做以下设置:
<system.web >
<httpRuntime requestValidationMode="2.0" / >
</system.web >
注意:在MVC项目中,Views文件夹下与主项目下,都会有一个web.config文件。Views下的web.config文件只对Views文件夹下面的文件有效。如果你要处理的页面不在Views下面,那么<httpRuntime requestValidationMode="2.0" / >一定要设置在主项目下的web.config中才有用。
原以为就像普通的Asp.net页面一样,在头部的Page中加入ValidateRequest="false"就行了,谁知问题还是存在。弄了一个上午,问题终于解决,将解决方法汇总如下:
1,在出现该错误的页面头部的page中加入ValidateRequest="false",那么该页面的任何一次Post提交都不会再验证提交内容的安全性。
如:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Manage/ViewMasterPageEdit.Master" Inherits="System.Web.Mvc.ViewPage<MvcWebPhoto.Models.Entities.Article >"
ValidateRequest="false" % >
2,在web.config中的pages节中配置validateRequest="false",如:
<system.web >
<pages validateRequest="false" ></pages >
</system.web >
但这样,整个项目中的所有Form请求都不再验证提交内容的安全性,极不提倡这种做法。
3,如果你使用的是.Net 3.5,MVC 2.0及更高的版本,那么可以在处理Post方法的Action添加一个特性:[ValidateInput(false)],这样处理就更加有针对性,提高页面的安全性。
如:
[HttpPost]
[ValidateInput(false)]
public ActionResult CatalogEdit(Catalog model)
{
return View();
}
重要:
如果你使用的是MVC 3.0,那么你会发现做了以上的设置后还是无效。这是因为你还需要在web.config中做以下设置:
<system.web >
<httpRuntime requestValidationMode="2.0" / >
</system.web >
注意:在MVC项目中,Views文件夹下与主项目下,都会有一个web.config文件。Views下的web.config文件只对Views文件夹下面的文件有效。如果你要处理的页面不在Views下面,那么<httpRuntime requestValidationMode="2.0" / >一定要设置在主项目下的web.config中才有用。
相关文章推荐
- BeagleBone折腾记(一):连接你的狗板
- Asp.net快速开发
- Asp.net MVC中的ViewData与ViewBag
- ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
- EasyIDE ASP Framework - ASP快速开发框架
- ASP.NET中为GridView添加删除提示框的方法
- asp.net Session 一般设置
- ASP.NET MVC中Nuget安装了引用References里却不显示的解决办法
- A Reusable Aspect for Memory Profiling
- ASP NET MVC OutputCache
- Asp.Net Url重写页面中Session无效
- KafkaSpout分析:配置
- 不支持union select 时的asp手工注入方法
- Aspose.Word 操作word复杂表格 拆分单元格 复制行 插入行 文字颜色
- Aspose.Word 操作word复杂表格 拆分单元格 复制行 插入行
- Asp的两个内置对象request和response
- C#语法糖之Cookies操作类 asp.net
- Metasploit渗透学习日记
- OSX10.10 Yosemite安装Metasploit
- 使用ASP.Net WebAPI构建REST服务——客户端