Почему запрос вызывает исключение при сканировании googlebot, а не при вставке в URL? - PullRequest
2 голосов
/ 13 декабря 2011

Я получил тонну этих исключений в моем журнале событий.

EVENT ID: 1309

Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 12/12/2011 1:40:41 PM 
Event time (UTC): 12/12/2011 8:40:41 PM 
Event ID: f85f113a40d349f5a1fe9ef481038281 
Event sequence: 8993 
Event occurrence: 1463 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/12/ROOT-1-129681577057031250 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\inetpub\wwwroot\gouki\ 
    Machine name: GOUKIPRIME 

Process information: 
    Process ID: 7508 
    Process name: w3wp.exe 
    Account name: IIS APPPOOL\gouki 

Exception information: 
    Exception type: HttpException 
    Exception message: A potentially dangerous Request.Path value was detected from the client (?).
   at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
   at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)



Request information: 
    Request URL: http://gouki.com/Story/?page=8&orderby=views&tagged=&subject=&author=?page=10&orderby=views,views,views,&tagged=,,,,,,,,,,,,&subject=,,,,,,,,,,,,,,,,,,&author=,,,,,,,,,,,,,, 
    Request path: /Story/?page=8&orderby=views&tagged=&subject=&author= 
    User host address: 66.249.68.81 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: IIS APPPOOL\gouki 

Thread information: 
    Thread ID: 142 
    Thread account name: IIS APPPOOL\gouki 
    Is impersonating: False 
    Stack trace:    at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
   at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)


Custom event details: 

Connection: Keep-alive
Accept: */*
Accept-Encoding: gzip,deflate
From: googlebot(at)googlebot.com
Host: gouki.com
User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Я не уверен, где googlebot выбирает неверно сформированный URL (я безуспешно пытался воспроизвести на своем сайте репродукцию), но мне более любопытно, почему это исключение регистрируется в журнале событий когда я сам копирую / вставляю URL (продолжаю, попробуйте), я не получаю ошибки. Да, страница несколько сломана, поскольку значения параметров не имеют смысла, и я понимаю, почему двойные знаки вопроса могут вызывать проблемы, но исключение не выдается. Я попытался сменить пользовательский агент на googlebot, но все еще не вижу ошибки.

Почему-то Asp.net MVC видит первым? как часть пути, а не начало строки запроса, но только когда googlebot запрашивает страницу.

Есть ли здесь какое-то побег, которого я не вижу в журнале событий?

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Обратите внимание:

Request path: /Story/?page=8&orderby=views&tagged=&subject=&author=

Сервер считает, что параметры строки запроса являются частью имени страницы, что, вероятно, означает, что первый знак вопроса фактически экранирован с использованием %3f, но не показывается таким образом в сообщении об ошибке. Знак вопроса действителен как разделитель для строки запроса, но не как часть имени страницы.

Бот где-то взял URL-адрес и, возможно, попытался его исправить. Убедитесь, что вы правильно экранировали URL-адреса, то есть & должно быть &, если URL-адрес находится в атрибуте элемента HTML.

Если на вашей странице есть относительная ссылка типа ?page=8&orderby=views&tagged=&subject=&author=, бот может попытаться создать полный URL-адрес, комбинируя его с URL-адресом текущей страницы, что объясняет двойной набор строк запроса. Обычно это должно работать, но если есть какая-то проблема с экранированием URL, это может привести к путанице.

0 голосов
/ 13 декабря 2011
...