我的全局异常处理程序(在Global.asax.cs中)捕获了一些异常。这些源自允许从网站发送电子邮件的页面。此页面包含3个用于用户输入的文本框,我怀疑这些例外可能是由输入框中的恶意代码引起的。这是错误消息:
A potentially dangerous Request.Form value was detected from the client (ctl00$contentPageSpecificMain$textBoxBody=",
<a href="http://f1ga...").; stack= at System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection)
at System.Web.HttpRequest.ValidateHttpValueCollection(HttpValueCollection collection, RequestValidationSource requestCollection)
at System.Web.HttpRequest.get_Form()
at System.Web.HttpRequest.get_HasForm()
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
at System.Web.UI.Page.DeterminePostBackMode()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.contact_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously);
contentPageSpecificMain 是主页面中内容占位符的名称。 textBoxBody 是用户在其中键入电子邮件正文的文本框的名称。此后的超链接似乎包含随机字符序列。
我对此有几个具体问题。
首先,我阻止小于和大于符号,所以我不知道如何将恶意代码输入到表单中。
超链接中的URL总是以三个点结尾;这是.NET异常系统正在做的事情,还是以某种方式实际输入到表单中的URL?
有没有人见过这样的东西?它没有造成损害,因为它被.NET阻止了,但令人失望的是它已经走到了这一步,因为我已采取措施保护表单免受恶意输入。
亲切的祝愿〜帕特里克答案 0 :(得分:1)
如果您想直接自己处理验证,可以将TextBox控件上的ValidateRequestMode设置为Disabled。它可以在设计时或代码中完成。这允许您在不首先被Asp.net处理程序捕获的情况下处理输入。
TextBox1.ValidateRequestMode = Disabled;
这样做的好处是你可以将标志设置在适合你的应用程序的任何级别,并且继承将允许它逐渐减少,而不必为应用程序或整个页面设置if。