`
jeelee
  • 浏览: 637582 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

】“从客户端(ctl00$Content$txtContent)中检测到有潜在危险的 Request.Form 值”之解

 
阅读更多
“/WebSite”应用程序中的服务器错误。从客户端(ctl00$Content$txtContent="木木木木木木木<br />
")中检测到有潜在危险的 Request.Form 值。说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkId=153133。

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(ctl00$Content$txtContent="木木木木木木木<br />
")中检测到有潜在危险的 Request.Form 值。


解决方法(不推荐)

A potentially dangerous Request.Form value was detected from the client (txtTest="<b>"). 由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值。立马报错。

解决方案一:
在.aspx文件头中加入这句:
<%@ Page validateRequest="false" %>

解决方案二:
修改web.config文件:
<configuration>
<system.web>

<httpRuntime requestValidationMode="2.0" />

<compilation debug="true">
<pages validateRequest="false" />
</system.web>
</configuration>

因为validateRequest默认值为true。只要设为false即可。

来源:[清清月儿]
禁止validateRequest的办法
http://blog.csdn.net/21aspnet/archive/2007/03/20/1535531.aspx

解决方法(推荐)

为什么很多程序员想要禁止 validateRequest 呢?有一部分是真的需要用户输入"<>"之类的字符。这就不必说了。还有一部分其实并不是用户允许输入那些容易引起XSS的字符,而是讨厌这种报错的形式,毕竟一大段英文加上一个ASP.Net典型异常错误信息,显得这个站点出错了,而不是用户输入了非法的字符,可是自己又不知道怎么不让它报错,自己来处理报错。

对于希望很好的处理这个错误信息,而不使用默认ASP.Net异常报错信息的程序员们,你们不要禁用validateRequest=false。

正确的做法是在你当前页面添加Page_Error()函数,来捕获所有页面处理过程中发生的而没有处理的异常。然后给用户一个合法的报错信息。如果当前页面没有Page_Error(),这个异常将会送到Global.asax的Application_Error()来处理,你也可以在那里写通用的异常报错处理函数。如果两个地方都没有写异常处理函数,才会显示这个默认的报错页面呢。

举例而言,处理这个异常其实只需要很简短的一小段代码就够了。在页面的Code-behind页面中加入这么一段代码:

protected void Page_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex is HttpRequestValidationException)
{
Response.Write("<script language=javascript>alert('字符串含有非法字符!')</script>");
Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()
Response.Write("<script language=javascript>window.location.href='default.aspx';</script>");
}
}

这样这个程序就可以截获 HttpRequestValidationException 异常,而且可以按照程序员的意愿返回一个合理的报错信息。

这段代码很简单,所以我希望所有不是真的要允许用户输入<xxx>之类字符的朋友,千万不要随意的禁止这个安全特性,如果只是需要异常处理,那么请用类似于上面的代码来处理即可。

而对于那些通过明确禁止了这个特性的程序员,自己一定要明白自己在做什么,而且一定要自己手动的检查必须过滤的字符串,否则你的站点很容易引发跨站脚本攻击。


分享到:
评论

相关推荐

    c# webform js文件获取客户端控件,后台cs获取前台客户端控件的值,c#和js的交互

    - **PageMethods**:在C#中定义WebMethod,通过jQuery的`$.ajax`或`$.getScript`调用。 4. **示例代码** 假设有一个ASP.NET WebForm项目,包含一个TextBox控件(txtName)和一个Button控件(btnSubmit)。在按钮...

    CTL590.docx

    很抱歉,根据您提供的信息,"CTL590.docx"的标题、描述以及标签都指向同一个未知的具体文档,而【部分内容】仅提及了“附件1:CTL590”,没有提供任何实质性的IT知识内容。为了能生成相关的IT知识点,我需要更详细的...

    com.ctl.student_5.0.0.apk

    com.ctl.student_5.0.0.apk

    php.ctl-Editplus的PHP函数自动完成素材库

    这个素材库包含了多个子文件,如`phpsql.ctl`、`php4arrs.ctl`、`php4str.ctl`、`php4syst.ctl`、`php4func.ctl`、`php4math.ctl`、`php4vars.ctl`和`php4http.ctl`等。每个子文件都对应PHP的不同领域,分别涵盖...

    C语言头文件 CTL3D

    C语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 CTL3DC语言头文件 ...

    CTL260 QEB_45 rev.00.pdf

    文档"CTL260 QEB_45 rev.00.pdf"显然是一份与电气工程相关的技术手册,其中详细描述了CTL260 QEB电气组件的规格、设计和操作指南。该文档可能包含了产品的电路图、接线图、功能说明、安装指导以及故障排除等内容。...

    脚本动态创建复选框,添加事件

    document.getElementById("ctl00_ContentPlaceHolder1_txtContent").value = document.getElementById("ctl00_ContentPlaceHolder1_txtContent").value.replace(obj.value + ";", ""); } } ``` 以上四个知识点...

    import com.sun.jndi.ldap.ctl.VirtualListViewControl;

    import com.sun.jndi.ldap.ctl.VirtualListViewControl;

    media-ctl 工具

    《media-ctl工具详解及其在DM3730平台的应用》 在数字媒体处理领域,TI(Texas Instruments)的DaVinci平台以其强大的多媒体处理能力备受赞誉。在该平台中,一个重要的工具就是"media-ctl",它专门用于视频采集通道...

    CTL_CODE.doc

    "CTL_CODE:用于创建唯一的32位系统I/O控制代码" CTL_CODE是一个宏定义,用于创建一个唯一的32位系统I/O控制代码。这个控制代码包括四个部分组成:DeviceType(设备类型,高16位(16-31位)),Access(访问限制,...

    CTL_CODE 驱动

    CTL_CODE在IT领域,特别是在驱动程序开发中,是一个重要的概念。它代表Control Transfer Code,是Windows操作系统中设备驱动程序用来处理I/O控制请求的一种机制。理解并熟练运用CTL_CODE是驱动开发者必须掌握的关键...

    g2ctl:grads绘图应用 CTL文件转化

    g2ctl:grads绘图应用 CTL文件转化

    oracle load命令与ctl写法

    CTL文件是SQL*Loader用来控制数据加载过程的配置文件,其内容定义了如何从源文件读取数据以及如何将其插入到目标表中。 ##### 1. CTL 文件的基本结构 CTL文件通常包含以下几个部分: - **`LOAD DATA`**:指示开始...

    CTL3D32S.LIB

    CTL3D32S.LIB VC++ 2010

    g2ctl_g2ctl_Perl_

    标题 "g2ctl_g2ctl_Perl_" 指向的是一个基于Perl语言开发的工具,名为"G2ctl",主要用于气象制图。这个工具在气象学领域有着重要的应用,它能够帮助用户生成专业的气象图表,对天气数据进行可视化处理。在使用G2ctl...

    ctl.zip_java ctl

    从描述来看,这个压缩包中的内容是用户使用Java编写的一个可执行程序。 【描述】"我java编的一个运行程序" 暗示了这个压缩包内的主要目标是一个Java程序,它被设计为可以被运行,可能是控制台应用或者GUI应用。Java...

Global site tag (gtag.js) - Google Analytics