asp.net4.0框架下验证机制失效的原因及处理办法

 更新时间:2013年06月08日 11:51:48   作者:  
asp.net4.0框架下验证机制失效的原因及处理办法,需要的朋友可以参考一下

ASP.NET请求验证功能为我们提供应用程序的安全保证,避免站点受到XSS跨站脚本攻击。但在有些时候,比如我们需要使用Ckeditor等在线文本编辑器让用户输入一些HTML文本,在ASP.NET 2.0框架下,通过在web.config中设置validateRequest="false"。或者在MVC中,我们可以通过在Controller或者Action上设置[ValidateRequest(false)]这个特性来达到禁用的目的。但是在ASP.NET 4.0框架下,你会发现,即使你这样做,仍然会提示你这样的一个异常“A potentially dangerous Request.Form value was detected from the client”。这是怎么回事呢?

原来是asp.net4.0应用程序生命周期发生了变化,在之前的ASP.NET版本中,请求验证是默认启用的,但是它只对页面请求有效(请求.aspx页面),并且也只是在页面被请求时验证。但是在ASP.NET 4.0中,请求验证功能被提前到IHttpHandler.BeginRequest这个方法被请求之前,这也就意味着所有进入ASP.NET请求通道的所有的HTTP请求都将会被进行请求内容合法性的验证,包括有的自定义HttpHandler,WebService请求,甚至于利用自定义Http Module进行自定义请求处理程序。

请求验证处理被提前的后果就是导致我们在页面,或者Controller中设置ValidateRequest=false,将会失效,无法阻止程序不去验证请求的输入内容了。因为这样做后,验证器无法得到请求的页面是否禁用了验证请求,因为还没有实例化HttpHandler。并且在ASP.NET4.0中,并没有提供给我一个地方去禁用这个验证功能。但是出于兼容性的考虑,ASP.NET允许我们通过在web.config中配置使用ASP.NET 2.0的请求验证行为:<httpRuntime requestValidationMode=”2.0″ />,这样就解决了。

相关文章

  • .NET Core Web APi类库内嵌运行的方法

    .NET Core Web APi类库内嵌运行的方法

    这篇文章主要介绍了.NET Core Web APi类库内嵌运行的方法,本节我们重点讨论如何内嵌运行.NET Core Web APi类库,同时介绍了两种激活比如控制器特性方案,需要的朋友可以参考下
    2022-09-09
  • .Net使用Cancellation Framework取消并行任务

    .Net使用Cancellation Framework取消并行任务

    这篇文章介绍了.Net使用Cancellation Framework取消并行任务的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 如何在不同.net版本实现单点登录

    如何在不同.net版本实现单点登录

    经过研究,重写实现了一个可以在不同.net版本中实现单点登录的简单方法。现在和大家分享一下,不足之处还望见谅
    2013-07-07
  • Visual Studio 2017安装心得总结

    Visual Studio 2017安装心得总结

    这篇文章主要为大家详细总结了Visual Studio 2017安装心得,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • .NET Core单元测试的两种方法介绍

    .NET Core单元测试的两种方法介绍

    这篇文章介绍了.NET Core单元测试的两种方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • Asp.Net Core轻松学之利用日志监视进行服务遥测详解

    Asp.Net Core轻松学之利用日志监视进行服务遥测详解

    这篇文章主要给大家介绍了关于Asp.Net Core轻松学之利用日志监视进行服务遥测的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-12-12
  • Gridview用法大总结(全程图解珍藏版)

    Gridview用法大总结(全程图解珍藏版)

    Gridview用法大总结啦!精彩效果截图加详细源代码注释,需要的朋友赶紧过来看看吧
    2013-06-06
  • asp.net 中将表单提交到另一页 Code-Behind(代码和html在不同的页面)

    asp.net 中将表单提交到另一页 Code-Behind(代码和html在不同的页面)

    To send Server control values from a different Web Forms page
    2009-04-04
  • asp.net 去除viewstate

    asp.net 去除viewstate

    生成了这么多的一段东西,这段东西对seo一点好处也没有。而我要做的就是去掉它,但有一点,去掉但不能让它原来的控件和内容都发生变化
    2009-03-03
  • 详解.net core日记记录

    详解.net core日记记录

    这篇文章主要介绍了.net core的日记记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论