Compartilhar via


Filtragem de Solicitações e Reescrita da URL no IIS 7.0

por Ruslan Yakushev

O IIS 7.0 e superior inclui um módulo de filtragem de solicitação baseado no filtro ISAPI URLScan para IIS 6.0. O módulo o ajuda a reforçar a segurança dos servidores Web.

A equipe do IIS também lançou um módulo de reescrita da URL complementar para o IIS, que fornece funcionalidade para a manipulação da URL baseada em regras. Embora a principal finalidade do módulo de reescrita da URL seja reescrever os caminhos da URL para as solicitações, o módulo de reescrita também pode ser usado como uma ferramenta de imposição de segurança que ajuda a impedir o acesso ao conteúdo do site.

Este artigo explica as diferenças entre esses dois módulos e fornece diretrizes sobre quais escolher para reforçar a segurança do servidor Web.

Filtragem de solicitações e reescrita da URL no Pipeline de Processamento de Solicitações do IIS

Em primeiro lugar, é importante entender como o módulo de filtragem das solicitações e do módulo de reescrita se conectam ao pipeline do IIS. O diagrama a seguir mostra a ordem relativa desses dois módulos:

Diagram of the worker process to get from H T T P Request and H T T P Response.

O módulo de filtragem de solicitação é executado no início do pipeline de processamento de solicitação manipulando o evento BeginRequest. O módulo avalia os metadados da solicitação, como cabeçalhos, cadeia de caracteres de consulta, comprimento do conteúdo, etc., para determinar se os metadados de solicitação correspondem a qualquer filtro existente. Se houver correspondência, o módulo gerará uma resposta 404 (Arquivo Não Encontrado) e, na sequência, os atalhos do restante do pipeline do IIS.

Se o módulo de filtragem da solicitação não tiver filtrado a solicitação, a solicitação será passada para o próximo módulo no pipeline do IIS, que pode ser o módulo de reescrita da URL. O módulo de reescrita da URL avalia a solicitação em relação às regras de regravação. Se uma regra resultar em um redirecionamento ou enviar uma resposta personalizada ou anular a solicitação, o módulo de reescrita gerará uma resposta apropriada e, na sequência, os atalhos do restante do pipeline do IIS.

Observe que o módulo de filtragem da solicitação é colocado antes do módulo de reescrita da URL. Isso ocorre porque, na arquitetura do IIS, o módulo de filtragem de solicitações é considerado um componente gatekeeper que protege o servidor Web contra solicitações mal-intencionadas. O módulo de reescrita da URL é considerado um componente de manipulação da URL baseado no servidor que funciona nas URLs que já foram filtradas pelo módulo de filtragem da solicitação. Você pode pensar na regravação da URL como a lógica do aplicativo baseada no servidor, semelhante aos aplicativos ASP.NET que também podem executar a regravação ou o redirecionamento. A filtragem de solicitações é a primeira linha de defesa, enquanto o reescritor da URL pode ser uma segunda barreira de segurança mais específica do aplicativo. Para obter mais detalhes, consulte a postagem no blog "Interação entre a Reescrita da URL e os Módulos de Filtragem das Solicitações para IIS7" no site da Web do IIS.

Diferenças entre filtragem de solicitação e regravação da URL

As diferenças conceituais entre a filtragem das solicitações e a reescrita da URL são estas:

  • A filtragem das solicitações foi projetada e otimizada puramente para os cenários de segurança.
  • A reescrita da URL pode ser aplicada a um amplo conjunto de cenários; os cenários de segurança são apenas um subconjunto desses cenários.

Com isso em mente, você pode comparar os recursos de cada módulo que podem ser usados nos cenários de segurança. Você também deve considerar as seguintes tarefas:

  1. Critérios de filtragem. Que tipo de entrada pode ser usada para tomar uma decisão sobre o bloqueio de uma solicitação? Além disso, quais condições podem ser usadas para expressar a lógica de bloqueio da solicitação?
  2. Ações de bloqueio da solicitação. Quais ações podem ser executadas quando uma solicitação atende aos critérios de filtragem?
  3. Impacto no desempenho. Como a filtragem das solicitações e a reescrita da URL podem afetar o desempenho do servidor Web?

Critérios de Filtragem

A tabela a seguir lista os possíveis critérios de filtragem e explica como cada módulo os suporta.

Critério Compatível com o módulo de filtragem das solicitações? Compatível com o módulo de reescrita da URL?
Verificar o caminho da URL solicitada Sim, usando a pesquisa de subcadeia de caracteres Sim, usando os padrões regex e coringa
Verificar o comprimento da URL Sim Não
Verificar a cadeia de caracteres de consulta Não Sim, usando os padrões regex e coringa
Verificar o comprimento da cadeia de caracteres da consulta Sim Não
Verificar verbos HTTP Sim Yes
Verificar o comprimento do conteúdo da solicitação Sim Não
Examinar os cabeçalhos HTTP Não Sim, usando os padrões regex e coringa
Verificar o comprimento dos cabeçalhos HTTP Sim Não
Examinar as variáveis do servidor Não Sim
Verificar o endereço de IP do remetente ou o nome do host Não* Sim

* O módulo restrição do IP no IIS pode ser usado para bloquear as solicitações de endereços de IP específicos e os nomes do host.

Ações de bloqueio da solicitação

O módulo de filtragem da solicitação tem apenas uma ação, que ele executa quando uma solicitação corresponde a um critério de filtragem. A ação é retornar o código de status 404 (Arquivo Não Encontrado).

O módulo de reescrita da URL fornece um conjunto muito mais amplo das opções se uma solicitação precisa ser bloqueada, incluindo o seguinte:

  1. A URL solicitada pode ser reescrita em outra URL. Por exemplo, para impedir a vinculação frequente da imagem, você pode reescrever uma URL em um arquivo de imagem de espaço reservado para as solicitações provenientes de um domínio de terceiros.
  2. O cliente Web pode ser redirecionado para uma URL diferente.
  3. Um código do status HTTP da sua escolha pode ser enviado para o cliente Web. Por exemplo, você pode enviar uma resposta de status 401 (Não autorizada) para as solicitações que correspondam aos critérios de filtragem específicos.
  4. A solicitação HTTP pode ser anulada descartando a conexão do soquete. Dessa forma, o cliente Web não obtém informações sobre o servidor Web.

Impacto do Desempenho

Ambos os módulos foram implementados para terem o menor impacto possível no desempenho do servidor Web do IIS. Porém, existem as seguintes diferenças importantes de desempenho entre esses módulos:

  • O módulo de reescrita da URL depende muito dos padrões de expressão regulares. Avaliar as expressões regulares é uma operação cara e, se você definir muitas regras de reescrita complexas, poderá ver um impacto perceptível na taxa de transferência do seu servidor Web.
  • O módulo de filtragem da solicitação não usa expressões regulares ou qualquer outra correspondência de padrões. Ele executa uma pesquisa de subcadeia de caracteres que pode ter um impacto significativamente menor na taxa de transferência do servidor Web.

Escolhendo Entre Filtragem da Solicitação e Reescrita da URL

Se você estiver escolhendo entre a filtragem da solicitação e a reescrita da URL para reforçar a segurança do seu servidor Web, a regra geral será começar com a filtragem das solicitações. A filtragem de solicitações é otimizada nos cenários de segurança e seu conjunto de recursos provavelmente será suficiente para implementar seus requisitos de segurança. Se você tiver um requisito que não pode ser resolvido pelo módulo de filtragem da solicitação, use o módulo de reescrita da URL para implementar esse requisito e deixe o restante das tarefas de segurança para o módulo de filtragem de solicitação. Assim, você reduz o impacto de desempenho do módulo de reescrita da URL com a quantidade mínima das regras de reescrita para o servidor processar.