现在做ASP.NET项目的时分就有遇到过“用户代码未处理HttpRequestValidationException:从客户端***中检测到有潜在风险的 Request.Form/Request.QueryString值。”的问题,其实这是ASP.NET关于XSS进犯的一种防护手法,避免歹意的HTML符号或脚本数据注入到网站中。
遇到这种问题,我百度了一下,看了大神写的博客,所以转载+备份。
要处理这个问题需求对应多种状况,并且有多种办法来处理。在ASP.NET WebForm项目中能够对独自页面或许大局页面进行处理。
办法一:在出现问题的页面中,设置头部Page的特点ValidateRequest=false,代码如下:
<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication13.WebForm1" %>
MSDN关于ValidateRequest特点的描述:假如 ASP.NET 针对风险值查看来自浏览器的输入,则为 true;不然为 false。 默许值为 true。
办法二:在装备文件中 设置system.web 节点下pages节点的validateRequest="false",代码如下:
<system.web> <pages validateRequest="false"></pages> <httpRuntime requestValidationMode="2.0"/> </stytem.web>
留意:
1、办法二要慎用,办法二是大局装备,一旦封闭了全站的恳求验证,网站就很有或许遭到各种进犯以及承受许多风险的数据,比方最常见的XSS进犯。
2、办法一和办法二设置收效都有一个条件,便是装备文件中的httpRuntime 节点的验证形式有必要为2.0,.Net Framework4.0版别以上的项目,不设置的话默许验证形式是4.0,4.0的验证形式ValidateRequest=false将会无效,除非 你的ASP.NET项目运用的仍是.NET 4.0以下的结构。
代码如下:
<system.web> <httpRuntime requestValidationMode="2.0"/> </stytem.web>
总结MSDN的材料,归纳来说便是4.0的验证形式默许是全站HTTP恳求都会进行验证,包括COOKIE恳求、.ashx一般处理程序恳求都会进行验证。而2.0的形式仅仅针对当时的.aspx页面,这儿看下微软MSDN上的阐明:
RequestValidationMode 特点指定要运用的 ASP.NET 验证办法。 这可所以在 ASP.NET 版别(早于版别 4)中或在 .NET Framework 4 中运用的版别中运用的算法。 能够将特点设置为下列值: 4.0(默许)。 HttpRequest 目标在内部设置一个标志,该标志指示每逢拜访 HTTP 恳求数据时应触发恳求验证。 这可确保在恳求期间拜访数据(如 cookie 和 URL)之前触发恳求验证。 装备文件中页元素(假如有的话)的恳求验证设置或独自页面中的 @ 页指令的恳求验证设置将被疏忽。 2.0. 仅对网页(而不是对一切 HTTP 恳求)启用恳求验证。 此外,装备文件中的 pages 元素(假如有的话)的恳求验证设置或独自页中的 @ Page 指令的恳求验证设置用来确定要验证哪些页恳求。 未验证分配给此特点的值是否匹配特定版别的 ASP.NET。 任何小于 4.0(例如 3.7、2.9 或 2.0)的数值将被解释为 2.0。 任何大于 4.0 的数值将被解释为 4.0。 若要在装备文件中设置此值,能够为 httpRuntime 元素的 requestValidationMode 特性赋值。 有关更多信息,请拜见 httpRuntime 元素(ASP.NET 设置架构)。
3、办法一也是在特定环境下才能够撤销验证,关于用户的输入内容,有必要要做好相对应的防护办法,根本的能够运用 HttpUtility.HtmlEncode()对用户输入文本进行编码。当然引荐仍是运用AntiXSS类库,在.NET Framework4.5以上的版别现已将这个类库包括进去,有爱好的朋友能够研讨下System.Web.Security.AntiXss 命名空间。
别的一个便是ASP.NET MVC项目,MVC中比较简单,只要在控制器上设置特点ValidateInput(false)就行,例如:
[HttpPost] [ValidateInput(false)] public ActionResult Create(string strText) { /*此处省掉代码1000行……..*/ }
别的即使是ASP.NET MVC,也要在装备文件中设置验证形式为2.0,不然设置也是无效的。
一、关于007安排的工业链 1要提到装置完结JDK后为啥还要装备一下环境变量,或许许多Java的初学者或许有学过Java的朋友或许都未必能够彻底的答复的上来。 其实,所谓的环境变量,就是在操作体系中一...
关于移动取证,咱们现已讲了很多了,且最新的发展是专家们正在剖析智能手机自身是否能够拜访云数据。但是,将搜索扩展到用户的台式机和笔记本电脑或许也有助于拜访存储在物理智能手机和云中的数据。在这篇文章中,咱...
重视我的朋友都知道,我已经有一段时间没有写过文章了,作为补偿我决定向咱们共享一个我在私家项目中的风趣阅历。 什么是验证码? 在我看来,验证码主要是用于防止机器人操作,并保证应用程序用户真实性的一个解决...
print ?n?;主装备文件: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora等体系) 或/etc/apache/apache2.conf (Debia...
「怎么开宾馆_找黑客刷数据-哪里可以找黑客服务」页面会提示体系发作过错,无法加载模块module,不要紧,进行下一步,衔接菜刀;讯飞语音输入 1.0.10732014/3/13 15:56...
元数据是描述程序的二进制信息,存储在PE文件或内存中。 当将依据dot NET编写的代码编译为PE文件时,元数据和IL代码将写入到PE文件中。 …… Linhai的出世年份现已搞定,回到秋潮视觉工作室...