页面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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java读取csv存入list_Java读取CSV文件为List

    java读取csv存入list_Java读取CSV文件为List1packagetest;23importlombok.extern.slf4j.Slf4j;45importjava.io.BufferedReader;6importjava.io.FileInputStream;7importjava.io.IOException;8importjava.io.InputStreamReader;9importjava.util.ArrayLi…

    2022年10月28日
    0
  • PyCharm使用教程 — 9、PyCharm中的搜索技巧(文件/函数/内容)「建议收藏」

    PyCharm使用教程 — 9、PyCharm中的搜索技巧(文件/函数/内容)「建议收藏」PyCharm搜索(文件、函数、内容)Pycharm对搜索有很强大的支持,非常方便我们在项目中搜索某个关键词,或者函数等等1、文件内检索在文件内Ctrl+F,如下图所示2、文件内替换快捷键Ctrl+R,将搜索到的内容替换成目标内容。说明:保留原有大小写,比如原来的首字母是大写,替换之后仍旧保留首字母大写。如下所示3、项目中查找1、Ctrl+Shift+F该快捷键容易冲突,比如本地如果安装了搜狗输入法,可以先将对应的快捷键关闭再使用。或者通过菜单栏进入,如下图

    2022年8月28日
    0
  • CGlib 入门

    CGlib 入门CGlib入门cglibgithub地址链接。项目maven构建:cglibcglib3.1项目gradle构建:dependencies{compile’cglib:cgl

    2022年6月5日
    24
  • docker离线安装部署_安装rabbitmq

    docker离线安装部署_安装rabbitmq一、首先确保系统环境有dockerdocker-version查看如果没有可以看我的另一篇离线安装docker的文章离线安装docker二、在有外网的地方下载好docker镜像1、拉取docker镜像dockerpullrabbitmq:management2、查看下载好的镜像dockerimages3、开始创建rabbitmq容器dockerrun-d-p5672:5672-p15672:15672–namerabbitmqrabbitmq:manage

    2022年9月25日
    0
  • 教你写Makefile(很全,含有工作经验的)

    教你写Makefile(很全,含有工作经验的)原文转载文Makefile值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。    什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是…

    2022年5月8日
    28
  • 如何修改织梦系统后台登录名和密码听语音

    如何修改织梦系统后台登录名和密码听语音

    2021年9月20日
    43

发表回复

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

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