我们正在同时在线运营一个大约6000-7000名访客的网站(这是为了表明尺寸)
从ASP.Net 3.5切换到4.0后,我们突然面对大量的这些:
从客户端(>)检测到潜在危险的Request.Path值。
它们都是已损坏的网址,并且似乎包含某种HTML或javascript,这些网址会被投放到其他有效的网址上。
例如我们有这样的一个:
/ UI / Forms / Users / Photos / function(val){var result = null; for(var i = 0; i< this.length; i ++){if(this [i] === val){result = this [i]; this.splice(我
正如您所看到的那样,它是一个相对URL,并且在/ Photos /之前有效。但是函数(val)等是来自prototype.js的函数,它通常包含在页面上。
我们无法重新创建问题,但是这会导致成千上万的异常,我们宁愿没有,因为日志记录过程需要时间。此外,过多的“无关”异常导致我们的日志更难以阅读实际问题。
因此,我认为除了禁用验证之外别无选择 - 所以问题是如何?
我不想完全禁用请求验证,因为这也会禁用已发布表单值的验证。
非常感谢您提前提供任何帮助: - )
答案 0 :(得分:3)
如果此功能是您网站的一部分(将特殊字符发布到某些页面),那么您可以将以下内容添加到您的web.config中:
<httpRuntime requestValidationMode="2.0" />
这将禁用标有ValidateRequest="false"
的网页的请求验证。在ASP.NET 4.0中,您需要此属性,或者即使您禁用页面请求验证,您也会获得异常。
另一方面,如果这些例外是对您网站的攻击,那么就什么也不做,让ASP.NET框架放弃那些危险的请求。