2016-03-07 84 views
1

我们在具有负载平衡服务器的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? –

回答

0

我觉得你的控制(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

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

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

+0

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