处理“潜在危险的 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 值 的解决方法 [转]