我是靠谱客的博主 土豪抽屉,最近开发中收集的这篇文章主要介绍慎用ASP.Net的validateRequest="false",觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(TextBox4="<html><head><meta ht...")中检测到有潜在危险的 Request.Form 值。

解答:


在页面源文件顶部加入ValidateRequest="false"
     如:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xmlddl.aspx.cs" Inherits="test2.xmlddl" ValidateRequest="false"%>
大部分人给出的解决方案竟然是在ASP.Net页面描述中通过设置 validateRequest=false 来禁用这个特性,而不去关心那个程序员的网站是否真的不需要这个特性。对于希望很好的处理这个错误信息,而不使用默认ASP.Net异常报错信息的程序员们,你们不要禁用validateRequest=false。
正确的做法是在你当前页面添加Page_Error()函数,来捕获所有页面处理过程中发生的而没有处理的异常。然后给用户一个合法的报错信息。如果当前页面没有Page_Error(),这个异常将会送到Global.asax的Application_Error()来处理,你也可以在那里写通用的异常报错处理函数。如果两个地方都没有写异常处理函数,才会显示这个默认的报错页面呢。
protected void Page_Error(object sender, EventArgs e)
        {
            Exception ex = Server.GetLastError();
            if (ex is HttpRequestValidationException)
            {
                Response.Write("请您输入合法字符串。");
                Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。
            }
        }
这样这个程序就可以截获 HttpRequestValidationException 异常,而且可以按照程序员的意愿返回一个合理的报错信息。

最后

以上就是土豪抽屉为你收集整理的慎用ASP.Net的validateRequest="false"的全部内容,希望文章能够帮你解决慎用ASP.Net的validateRequest="false"所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部