Заблокировать пустой пользовательский агент с помощью URLScan - PullRequest
7 голосов
/ 22 сентября 2010

Я могу заблокировать определенный пользовательский агент, но я бы хотел заблокировать все запросы с пустым пользовательским агентом, используя URLscan v3.1.

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

4 голосов
/ 17 ноября 2010

Нет способа настроить это с помощью URLScan, но это можно сделать с помощью настраиваемого фильтра ISAPI на вашем сервере IIS. Вот это в C ++:

DWORD WINAPI __stdcall HttpFilterProc(HTTP_FILTER_CONTEXT *pfc, DWORD NotificationType, VOID *pvData) 
{ 
    char buffer[256];
    DWORD buffSize = sizeof(buffer);
    HTTP_FILTER_PREPROC_HEADERS *p;
    switch (NotificationType)  {
      case SF_NOTIFY_PREPROC_HEADERS :
      p = (HTTP_FILTER_PREPROC_HEADERS *)pvData;
      BOOL bHeader = p->GetHeader(pfc,"User-Agent:",buffer,&buffSize); 
      CString UserAgent(buffer);
      if(UserAgent.GetLength() == 0) { // reject blank user agents
        p->SetHeader(pfc, "url", "/rejected-blank-user-agent");
      }
      return SF_STATUS_REQ_HANDLED_NOTIFICATION; 
    }
    return SF_STATUS_REQ_NEXT_NOTIFICATION; 
}
0 голосов
/ 25 августа 2014

У меня есть пример блочного пользовательского агента, такого как spider. Вот

RuleList=DenyUserAgent   (in the options section)

(place in the end)
[DenyUserAgent]
DenyDataSection=Agent Strings
ScanHeaders=User-Agent

[Agent Strings]
YisouSpider

Может быть, слово может дать объяснение в INI-файле.

UrlScan поддерживает пользовательские правила, которые могут применяться в дополнение к другим проверки и параметры, указанные в этом файле конфигурации. Правила должны быть указан в строке через запятую в свойстве RuleList. Каждое правило в список соответствует двум разделам в этом файле конфигурации, один содержит параметры для правила, а другой содержит строки запрета для правило.

...