使用URLScan阻止空用户代理

时间:2010-09-22 17:35:49

标签: iis user-agent urlscan

我能够阻止特定的用户代理,但我想使用URLscan v3.1阻止所有使用空用户代理的请求。

有谁知道怎么做?

2 个答案:

答案 0 :(得分:4)

没有办法使用URLScan配置它,但可以使用IIS服务器上的自定义ISAPI筛选器来完成此操作。这是在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; 
}

答案 1 :(得分:0)

我有一个示例块特定用户代理,例如spider。这是

RuleList=DenyUserAgent   (in the options section)

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

[Agent Strings]
YisouSpider

也许这个词可以在ini文件中给出解释。

UrlScan支持除了另一个之外可以应用的自定义规则 此配置文件中指定的检查和选项。规则应该是 在RuleList属性中以逗号分隔的字符串列出。每个规则 该列表对应于此配置文件中的两个部分,一个 包含规则的选项,以及包含拒绝字符串的选项 规则。