出现从客户端中检测到有潜在危险的 Request.Form 值的错误时的解决办法

从客户端(tbName="';--<script language="ja...")中检测到有潜在危险的 Request.Form 值。

说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击。通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(tbName="';--<script language="ja...")中检测到有潜在危险的 Request.Form 值。

上面这个错误的解决办法在以下代码中:
<%@ Page validateRequest="false" language="c#" Codebehind="01Input.aspx.cs" AutoEventWireup="false" Inherits="CommandExample.login" %>
加入validateRequest="false"
或在web.config配置文件中加入如下代码:
<?xml version="1.0"?>
<configuration>
    
<system.web>
        
<compilation defaultLanguage="C#" debug="true">
            
<compilers>
                
<compiler language="c#" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" extension=".cs" compilerOptions="/d:DEBUG;TRACE"/></compilers></compilation>
        
<pages validateRequest="false" enableSessionState="true" enableViewState="true"/>
           ----------------------------------------------------------------------------------------------------------------------
        
<customErrors defaultRedirect="error.htm" mode="Off"/>
        
<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN"/>
        
<xhtmlConformance mode="Legacy"/></system.web>
</configuration>

带横线的那句,给网站所有的页面配置成validateRequest="false".

 

有很多用户说这样做会不会有危险。解决方案是将提交的字符串用server.htmldecode("字符串")或

用其他如字符串转换方法将"<" ">"等字符串转换成另一种字符串就OK!

posted @ 2007-01-22 19:11  花香的蜂  阅读(4907)  评论(4编辑  收藏  举报