警惕ASP.NET MVC中的ValidateInputAttribute
2015-01-16 20:35
309 查看
最近在做一个ASP.NET MVC项目的时候发现,有一个Controller的Action死活都没法接收到从客户端提交过来的Html表单请求和数据,后来才发现是因为默认情况下ASP.NET MVC在执行Controller的代码前,会对客户端提交到服务器的数据做安全性验证,如果ASP.NET检测到客户端提交的数据中有危险数据(危险数据一般是一些关键字和关键符号),那么就会中断当前客户端提交的请求并且引发一个异常,那么客户端提交的数据自然就不会进入到Controller和Action了。主要原因是在该项目中有页面使用了富文本编辑器,而用户在富文本编辑器中输入的文字实际上是Html,所以当富文本编辑器的数据提交到服务器端后,ASP.NET认为客户端提交的数据中包含大量Html标签是危险数据,请求直接就被终止了,然后抛出异常。其实这个问题不光在ASP.NET MVC中存在,在WebForm中也是有数据安全性验证的,而且MVC和WebForm的数据安全性验证是可以通过设置来关闭的,详情请接着往下看。
后来才知道,原来在ASP.NET MVC中有一个叫ValidateInputAttribute的Filter可以关闭数据安全性验证,将其加到接收数据的Action上后,客户端富文本编辑器的数据就能成功传入Action了,如下所示传入参数false就告诉ASP.NET不要对这个Action做数据安全性验证。
下面是对MVC系统自带常用的几个Filter的介绍,其中就有ValidateInputAttribute
后来才知道,原来在ASP.NET MVC中有一个叫ValidateInputAttribute的Filter可以关闭数据安全性验证,将其加到接收数据的Action上后,客户端富文本编辑器的数据就能成功传入Action了,如下所示传入参数false就告诉ASP.NET不要对这个Action做数据安全性验证。
下面是对MVC系统自带常用的几个Filter的介绍,其中就有ValidateInputAttribute
名称 | 说明 |
OutputCacheAttribute | 类似于 Web Form中在 OutputCache 指令。 OutputCache 属性允许在 MVC Framework 缓存控制器的输出。 |
ValidateInputAttribute | 类似于 Web Form中 ValidateRequest 属性。 MVC 框架默认将为 检查HTML 或其他危险输入传入的 HTTP 请求。 如果检测到,将引发异常。 使用此属性可以禁用请求验证。 |
AuthorizeAttribute | Authorize 属性,可以对控制器操做的声明性的授权检查。 该属性可以限制特定角色中的用户的操作。 当您创建只应该给管理员角色中的用户的操作时,您可以使用此属性。默认使用的ASP.NET Membership服务,如果不使用ASP.NET 的Membership服务,可以继承AuthorizeAttribute,重写实现。 |
ValidateAntiForgeryTokenAttribute | 此属性是一个解决方案以帮助防止跨站点的请求攻击 (CSRF)。 它允许验证的 HTTP POST 为特定于用户的标记在 Framework。 有关详细信息 CSRFs,请参阅" 使用 ASP.NET MVC AntiForgeryToken() 帮助器防止跨站点请求伪造 (CSFR)." |
相关文章推荐
- mvc中validateinput属性在asp.net4中不工作
- ASP.NET MVC 3 RC ValidateInput(false)页面验证失效的解决方案
- mvc中validateinput属性在asp.net4中不工作
- ASP.NET MVC 3 Validation - 正则表达式验证RegularExpressionAttribute之日期验证
- ASP.NET MVC过滤器中权限过滤器ValidateAntiForgeryToken的用法(Post-Only)
- Asp.net MVC 通过Attribute验证datamodel(一)
- asp.net mvc source(3)-Attribute
- ASP.NET MVC HandleErrorAttribute 和 远程链接
- How to use Asp.Net Mvc ActionFilterAttribute for form authentication
- ASP.NET MVC 3 Validation - 正则表达式验证RegularExpressionAttribute之日期验证
- [ASP.Net MVC 类库探索] AcceptVerbsAttribute 类
- Authorize attribute and jquery AJAX in asp.net MVC
- asp.net mvc + JqueryValidate(二)
- ASP.NET MVC AuthorizeAttribute 相关
- asp.net mvc 2.0 validate model
- ASP.NET MVC 扩展之 NoCacheAttribute
- (转载)ASP.NET MVC – Add CSS class Attribute
- Partial Page Output Caching in ASP.NET MVC 3 - OutputCache Attribute
- ASP.NET MVC中的Json Binding和Validate
- ASP.NETmvc常用jquery手机【jquery.validate.js】