页面ValidateRequest=false设置在asp.net4.0下失效

页面ValidateRequest=false设置在asp.net4.0下失效
ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击。但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些HTML文本,这时候ASP.NET2.0允许我们可以通过在web.config设置validateRequest=”false”。或者在MVC中,我们可以通过在Controller或者Action上设置[ValidateRequest(false)]这个特性来达到禁用的上的。但是在当你把站点从旧版本升级到ASP.NET

大家好,又见面了,我是你们的朋友全栈君。

ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击。但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些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.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″ />。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142611.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BS架构与CS架构的区别(详细讲解)

    BS架构与CS架构的区别(详细讲解)1.CS=Client-Server=客戶端-服務器。例子:QQ,迅雷,快播,暴風影音,各種網絡遊戲等等。只要有和服務器通訊的都算。2.BS=Browser-Server=浏览器-服務器。例子:所有的网站都是bs。C/S系统结构   B/S系统结构 1、客户端要求C/S客户端的计算机电脑配置要求较高。B/S客户端的计算…

    2022年6月29日
    39
  • 临界区保护_临界地带

    临界区保护_临界地带1临界区保护1.1问题引入首先看一下如下问题:原因分析:根本原因在于读-改-写过程中随时会被打断,再恢复运行时写,导致打断过程中其它写的效果被覆盖。1.2临界区概念临界区的概念如下:临界区指的是访问多个任务共享资源的一段代码。当有任务进入临界区时,其它任务必须等待直至该任务离开临界区,以确定共享资源的访问不会冲突。由于共享资源的访问存在于任务与任务之间、任务与中断I…

    2025年6月21日
    2
  • PKI体系知识详解[通俗易懂]

    PKI体系知识详解[通俗易懂]PKI体系具体流程图解ppt连接:http://download.csdn.net/source/2390117 

    2022年8月22日
    5
  • AD原理图编译WARNING:Net XXX has no driving source[通俗易懂]

    AD原理图编译WARNING:Net XXX has no driving source[通俗易懂]AltiumdesignerWARNING系列:WARNING:NetXXXhasnodrivingsource这篇博客填一下以前一篇关于AltiumdesignerERROR的坑原文章本次文章以基于AT89C51的函数信号发生器为例:https://blog.csdn.net/toyjis/article/details/105886632在我们在画完原理图后,很多人都会选择进行编译,一方面可以检查电气关系是否正确,一方面可以确保在后续PCB设计中不会因原理图出错而返工。但是,在

    2022年9月1日
    4
  • 二维数组a[3][4]_树状数组和线段树的区别

    二维数组a[3][4]_树状数组和线段树的区别原题链接堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 N 个元素,如果 N 是偶数,则中值定义为第 N/2 小元;若是奇数,则为第 (N+1)/2 小元。输入格式:输入的第一行是正整数 N(≤10​5​​ )。随后 N 行,每行给出一句指令,为以下 3 种之一:Push keyPopPeekMedian其中 key 是不超过

    2022年8月8日
    5
  • docker容器的启动(docker容器启动时间)

    在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。这个时候如果需要进入容器进行操作,有多种方法,包括使用官方的attach或exec命令,以及第三方的nsenter工具等。1、attach命令attach命令是Docker自带的命令,命令格式为:dockerattach[–detach-keys[=[]]][–no-stdin][–sig-prox

    2022年4月15日
    195

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号