zoukankan      html  css  js  c++  java
  • WebForm从客户端中检测到有潜在危险的Request.Form 值的处理办法

    从客户端中检测到有潜在危险的 Request.Form 值
    由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值。立马报错上面的错误。

    如:在网页的TextBox1中输入一些HTML代码,点提交按钮后会报错。
    解决办法:
    解决方案一: 
    在.aspx文件头中加入这句: 
    <%@ Page validateRequest="false"  %> 
    解决方案二: 
    修改web.config文件: 
    <configuration> 
      <system.web> 
        <pages validateRequest="false" /> 
      </system.web> 
    </configuration> 
    因为validateRequest默认值为true。只要设为false即可。

    解决方案三:
    当然,这样只能是让界面好看一些,要想抵制注入,还得从过滤上做足功夫
    然后,还是有不禁用validateRequest的方法的,如下
    不禁用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("请您输入合法字符串。");

                Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。

            }

     }

    解决方案四:

    在Global.asax文件的Application_Error()来处理。这样在整个网站中都生效。

        void Application_Error(object sender, EventArgs e)

        {

            // 在出现未处理的错误时运行的代码

            Exception ex = Server.GetLastError();

            if (ex is HttpRequestValidationException)

            {

                Response.Write("请您输入合法字符串。");

                Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。

            }

        }

  • 相关阅读:
    JVM调优
    Java堆空间的划分:新生代、老年代
    说一下 jvm 有哪些垃圾回收器?
    JVM的垃圾回收算法有哪些
    订单并发处理--悲观锁和乐观锁、任务队列以及订单模块开发流程
    MySQL数据库的四种事务隔离级别以及事务的并发问题(脏读/不可重复读/幻读)
    Python面试总结复习(四)
    Python面试总结复习(三)
    Django表设计,多表操作复习
    python面试总结复习(二)
  • 原文地址:https://www.cnblogs.com/TddCoding/p/3187303.html
Copyright © 2011-2022 走看看