zoukankan      html  css  js  c++  java
  • (续)检测到有潜在危险的 Request.Form 值

        继续昨天的问题“检测到有潜在危险的 Request.Form 值”,前面说如果不想取消数据验证那怎么避免这个问题。

    既然是数据验证到危险值然后报错那么我们可不可以在验证的中间做一个处理让他不报错,比如转义掉危险字符(例如将“<”用“Replace()”替换成A然后在接受数据后替换回来,当然这是比较笨的办法。另外不知HTMLEncode这个方法是否可用,我没试过。)

        还有一种处理方式就是在报错页面添加Page_Error()函数,然后在这个函数里面处理报错信息。

    1  protected void Page_Error(object sender, EventArgs e)
    2         {
    3             Exception ex = Server.GetLastError();
    4             if (ex is HttpRequestValidationException)
    5             {
    6                 Response.Write("请您输入合法字符串。");
    7                 Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。
    8             }
    9         }
    View Code

       这样程序就能截取HttpRequestValidationException信息,然后可以按照你个人意愿处理信息也可以不处理。

    总结:总结一下上面关于“检测到有潜在危险的 Request.Form 值”这个问题的解决方式吧。

       1)在页面Page指令添加validateRequest="false" 

       2)在webconfig添加<pages validateRequest="false" /> (关于两者区别前面说过包括注意<httpRuntime requestValidationMode="2.0" />

       3)转义掉危险字符(一、用Replace()替换。二、HTMLEncode()转义)

       4)报错页面添加Page_Error()函数。(推荐第四种)

       个人的小结:其实这个问题我已经遇到不下五六次了但是我还是没能想起来上一次是怎么解决的,总结个人的原因一个是记忆不足主要原因还是没有深入去理解这个问题的根本原因以及这个验证的由来。现在发现以后解决问题不能只是解决就行要认识本质这样加深理解。

    最后感谢这位博主 http://hi.baidu.com/iaskall/item/54ace6bb3af926d384dd79c4  

  • 相关阅读:
    Python 编程入门(2):复杂数据类型(列表,字典)
    Python 编程入门(1):基本数据类型
    编程的智慧总结笔记
    学习 Vim 命令总结
    JS中如何使用radio
    关于模板页调用js的问题
    关于session认证用户名和密码的父类(简单认证)
    如何使用日期格式化函数
    数据库中怎么查询所有的表名
    简单的分页
  • 原文地址:https://www.cnblogs.com/cjl2013/p/3573873.html
Copyright © 2011-2022 走看看