7

我在 IIS 7.5 下运行 ASP.NET Web 应用程序,我的应用程序日志充满了如下错误:

事件代码:3012

事件消息:处理 Web 或脚本资源请求时发生错误。资源标识符解密失败。

...

异常信息:

Exception type: HttpException 

Exception message: Unable to validate data.

在 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(布尔 fEncrypt,Byte[] buf,Byte[] 修饰符,Int32 开始,Int32 长度,布尔 useValidationSymAlgo,布尔 useLegacyMode,IVType ivType,布尔 signData)

...

索取资料:

Request URL: http://www.mysite.com/WebResource.axd?d=l0ngstr1ng0fl3tt3rs4ndd1g1ts 

Request path: /WebResource.axd 

...

我怎样才能防止它们出现?根据此链接,我已将以下代码添加到我的 Global.asax 文件中:

void Application_Error(object sender, EventArgs e)
{
  // Code that runs when an *unhandled* error occurs
  //// get reference to the source of the exception chain
  Exception ex = Server.GetLastError();
  string message = ex.Message;
  string path = Request.Path;
  // ignore the following:
  //   errors due to bots trying AXD URLs
  //   errors due to <doNastyThings /> tags in the URLs
  if (
    (ex is HttpException && (path.StartsWith("/WebResource.axd") || path.StartsWith("/ScriptResource.axd"))) ||
    (ex is HttpException && message.StartsWith("A potentially dangerous Request.Path value was detected from the client"))
    )
  {
    // clear the error *to prevent it from appearing in the main Application log*
    Server.ClearError();
    // need to manually direct to the error page, since it will no longer happen automatically once the error has been cleared
    Response.Redirect("/Error");
  }
}

第二组错误(对于潜在危险的请求)被这段代码捕获和抑制;但是,在执行此代码时,WebResource.axd 错误已写入应用程序日志。我假设这是因为 AXD 处理程序在错误日志记录方面与标准 ASPX 处理程序的工作方式不同(但我不知道该怎么做)。

感谢所有帮助!

4

3 回答 3

8

当我收到来自 Bingbot 爬虫的请求时,我只会收到此错误。你可以在这里检查它是否是 bing 机器人

所以我在我的 robots.txt 文件中添加了这个。如果您不特别添加它是用户代理 Bingbot,它就不起作用

User-agent: bingbot
Disallow: /ScriptResource.axd  
Disallow: /combinescriptshandler.axd  
Disallow: /WebResource.axd 
于 2014-08-07T12:57:00.300 回答
2

/WebResource.axd 通常被请求,因为页面包含指向它的链接,通常是 img src:

<img ... src="/WebResource.axd..." />

通常从 ASP.NET WebControl 生成,例如 Menu 控件。

我建议您找到包含 WebResource.axd 引用的页面,查看生成它的方式和原因,以及它为何无效。例如,您可以查看 IIS 服务器日志以查找紧接在 WebResource.axd 请求之前的页面,或者您可以将自己的日志记录添加到 Application_BeginRequest。

一旦您发现了有问题的页面,并确定了页面上的哪个控件正在生成请求,请在此处再次询问。

我过去在静态 HTML 页面中看到过这种情况,该页面包含从呈现的 ASPX 页面复制和粘贴的 HTML(例如菜单)。该请求在静态 HTML 页面中无效,修复只是删除了有问题的 img 元素。

于 2013-10-22T13:35:02.983 回答
2

当 Bingbot 做了一些非常愚蠢的事情并将其请求的 URL 小写时,可能会导致这些错误。

我不太清楚为什么会这样,但事件日志中列出的 URL 实际上是从受影响的页面链接的——只有一些大写字母!例如,HTML 中的实际链接:

https://example.com/WebResource.axd?d=[...]13QzJRP4goegQTwpQQcl[...]

bingbot 请求的相同链接:

https://example.com/webresource.axd?d=[...]13qzjrp4goegqtwpqqcl[...]

哦,好吧……这些显然是无害的错误,可以忽略或压制。

于 2015-05-27T02:03:11.387 回答