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

问题描述:

我们在具有负载平衡服务器的2台服务器上安装了Internet站点,两台服务器上的代码相同,但其中一台服务器每分钟显示以下例外,“$ MainContent $ ASPCONTROL“每次都在变化。从客户端检测到有潜在危险的Request.Form值异常

A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$drpOwnerNationality="...lect'"()&%<acx><ScRiPt >prompt..."). 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_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.ProcessRequest(HttpContext context) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)_ApplicationError, 
+0

我认为你的控制之一有脚本..ASP.Net做潜在的XSS验证您的窗体上的所有输入,...所以它是检测脚本像字符串中的一个你的控件是什么例外状态.. – Viru

+0

请同时添加asp.net页面代码 – Aristos

+0

你是否在任何输入字段中向服务器发送HTML? –

我觉得你的控制(drpOwnerNationality)中的一个具有script..ASP.Net做你的窗体上的所有投入的可能XSS验证......所以它在你的控制中的一个检测脚本是什么例外状态。

问题可能是您的应用程序的用户之一是在Textbox/Control中输入脚本,并且您没有在您的客户端验证。

的一种方法是在客户端做验证,并通知用户,他们无法进入脚本在你的控制

另一种方式是通过网页上设置validateReqeust属性设置为false

<@ Page validateRequest="false" %> 

关闭验证但是,如果你这样做,那么你已经将你的应用程序暴露给XSS攻击。一种方法可能是在处理该信息之前禁用验证并对所有输入进行编码...

`HttpServerUtility.HtmlEncode(drpOwnerNationality.SelectedText);` // assuming it is dropdown 
+0

drpOwnerNationality是下拉列表,它不应该包含“... lect'”()&%

+0

是啊...你有没有检查你的数据库没有脚本文本,你绑定到下拉....好主意将编码文本之前绑定到Dropdown – Viru

+0

我们不插入像这样的脚本到数据库,我们不允许将这些脚本插入到数据库中,但问题是w3wp进程在此服务器上占用更多内存。 – ATeba

错误原因是因为您尝试发送纯html或其他可能包含不安全元素的内容。 1.您可以像下面的article一样禁用请求验证。 2.其他选项,你可以在使用第三方JavaScript库发送你的内容到Base64(尝试谷歌它)。

还有其他几种选择,但它取决于你的情况。

+0

我不尝试发送不安全的HTML,\t drpOwnerNationality是dropdownlist,它不应该包含“... lect'”()&%

我们在阻止他们解决问题之后,从2个IP中检测到巨大点击量。 似乎有人试图发布不安全的HTML