处理“潜在危险的 Request.Form 值...”

Posted

技术标签:

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

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

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

在 ASP.NET 中?

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

因此,我可能不得不在我的Global.asax 文件中使用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() 来获取引发的异常、检查异常并根据需要做出响应(重定向到页面等)

【讨论】:

以上是关于处理“潜在危险的 Request.Form 值...”的主要内容,如果未能解决你的问题,请参考以下文章

如何处理“从客户端检测到潜在危险的 Request.Form 值”?

WebAPI.请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式 从客户端xx中检测到有潜在危险的Request.Form值

<BR>...")中检测到有潜在危险的 Request.Form 值。

异常记录MVC:从客户端中检测到有潜在危险的 Request.Form 值 的解决方法 [转]

从客户端中检测到有潜在危险的 request.form值[解决方法]

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