【问题标题】:Handle "potentially dangerous Request.Form value..."处理“潜在危险的 Request.Form 值...”
【发布时间】:2010-12-25 19:44:19
【问题描述】:

处理错误的最佳方法是什么,例如

从客户端检测到有潜在危险的 Request.Form 值”

在 ASP.NET 中?

我想继续验证,因为我的表单没有正当理由允许 HTML 字符。但是,我不太确定如何以更友好的方式处理此错误。我尝试在Page_Error 中处理它,但据我所知,这发生在较低级别的部分,因此Page_Error 函数永远不会触发。

因此,我可能不得不在我的Global.asax 文件中使用Application_Error。如果这是处理该错误的唯一方法,是否有专门处理该错误的方法?我不想以相同的方式处理所有应用程序错误。

谢谢

【问题讨论】:

  • 你能发布你的页面标签内容吗?

标签: asp.net error-handling application-error


【解决方案1】:

您不想在 Global.asax 中添加不必要的包袱。如果您认为这是由虚假数据输入引起的,请处理输入,无论它来自何处:

http://codersbarn.com/post/2008/11/01/ASPNET-Data-Input-Validation.aspx

专注于错误的原因:-)

【讨论】:

  • 感谢您的回复。我正在使用正则表达式来处理任何输入检查,但作为故障安全,我希望进行此验证。可能还有其他我想处理的异常,这只是其中之一,看看处理它们的最佳方法是什么。
  • 好的,但是使用正则表达式你不能预先确定恶意输入的格式。如有必要,您需要拦截所有输入端对其进行编码:-)
  • 啊,当然:D!所有输入都将被清理以完全删除任何特殊字符。正则表达式来自我制作的实用程序类的一部分,使用了该站点的一些表达式:securityfocus.com/infocus/1768
【解决方案2】:

你有两个选择:

// Editing your global.asax.cs
public class Global : System.Web.HttpApplication
{
    protected void Application_Error(object sender, EventArgs e)
    {
        Exception lastError = Server.GetLastError();
        if (lastError is HttpRequestValidationException)
        {
            Response.Redirect("~/RequestValidationError.aspx");
        }
    }
}

或者

// Editing your CUser.aspx.cs
public partial class CUser : System.Web.UI.Page
{
    protected override void OnError(EventArgs e)
    {
        Response.Redirect("~/RequestValidationError.aspx");
        Context.ClearError();
    }
}

【讨论】:

  • 谢谢,这看起来正是我需要的。
  • 将DeterminePostBackmode 提到here 是替代解决方案吗? [我没有玩过,所以我不知道它是否合适。]
【解决方案3】:

您可以在 Application_Error 中使用 Server.GetLastError() 来获取引发的异常、检查异常并根据需要做出响应(重定向到页面等)

【讨论】:

    猜你喜欢
    • 2011-11-09
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2011-06-21
    • 2011-07-23
    相关资源
    最近更新 更多