【问题标题】:Block empty user agent with URLScan使用 URLScan 阻止空用户代理
【发布时间】:2010-09-22 17:35:49
【问题描述】:

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

有人知道怎么做吗?

【问题讨论】:

    标签: iis user-agent urlscan


    【解决方案1】:

    无法使用 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; 
    }
    

    【讨论】:

      【解决方案2】:

      我有一个示例块特定的用户代理,例如蜘蛛。这里是

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-02
        • 2011-11-14
        • 1970-01-01
        • 2014-02-18
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        相关资源
        最近更新 更多