我们不断记录一些我们不知道原因的错误。用户代理字符串表明这几乎总是 Internet Explorer(如果不是总是的话)。(超过 90%,其余的要么有虚假的用户代理字符串,要么根本没有。)这似乎太高了,不可能仅仅是巧合。以下是一个例子:
2012-04-24 15:19:18,063 [ERROR] [SiteError] Message=Exception: Illegal characters in path.
Type = System.ArgumentException
Message = Illegal characters in path.
Data:
Page URL = /combres.axication();'></span> </div> <form name=
CallerIP = XXX
Parameters =
CONTENT_LENGTH=0
HTTPS=off
LOCAL_ADDR=XXX
PATH_INFO=/combres.axication();'></span> </div> <form name=
PATH_TRANSLATED=C:\inetpub\site\combres.axication();'><\span> <\div> <form name=
REMOTE_ADDR=XXX
REMOTE_HOST=XXX
REQUEST_METHOD=GET
SCRIPT_NAME=/combres.axication();'></span> </div> <form name=
SERVER_NAME=XXX
SERVER_PORT=90
SERVER_PORT_SECURE=0
SERVER_SOFTWARE=Microsoft-IIS/7.5
URL=/combres.axication();'></span> </div> <form name=
HTTP_CACHE_CONTROL=max-age=259200
HTTP_VIA=1.1 proxy1 (squid/3.0.STABLE19)
HTTP_ACCEPT=*/*
HTTP_ACCEPT_LANGUAGE=en-us
HTTP_COOKIE=XXX
HTTP_HOST=XXX
HTTP_REFERER=http://www.site.com/
HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)
HTTP_X_REAL_IP=XXX
HTTP_X_FORWARDED_FOR=XXX
HTTP_X_FORWARDED_PORT=80
HTTP_X_FORWARDED_PROTO=http
Stack Trace:
at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.GetExtension(String path)
at WebApp.RequestRouterModule.context_BeginRequest(Object sender, EventArgs e) in e:\BuildAgent\work\862e5d1ddaa44908\WebApp\Modules\RequestRouterModule.cs:line 106
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
注意请求的 URL。我们使用 Combres,正常链接是 /combres.axd/。此请求表明页面在“/combres.ax”处被截断,然后与来自其他地方的标记连接在一起。此页面请求是一个典型示例,但并非唯一。
有人知道这里发生了什么事吗?
答案1
我在 IIS 日志文件中看到了其他类似的请求。我注意到大多数请求似乎与网站页面上的 javascript 代码有关。例如,就您而言,您网站上的某个页面很可能包含 javascript 代码combres.axication();
。对于这些奇怪的请求,我唯一的解释是它们来自某种难以找到正确 URL 的损坏机器人。