使用URLScan阻止空用户代理

Ret*_*eto 7 iis user-agent urlscan

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

有谁知道如何做到这一点?

Luk*_*son 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; 
}
Run Code Online (Sandbox Code Playgroud)