Configure o IIS para retornar 404 para tentativas de procura de diretório

1

No IIS (6 ou 7), quando a Pesquisa no Diretório está desabilitada, o IIS retorna um erro "403 - Proibido" quando detecta uma tentativa de procurar um diretório (por exemplo, " link ").

Existe alguma maneira de configurar o IIS para retornar um erro "404 - Não encontrado" em vez de um "403" para tentativas de procura de diretório? Uma verificação de segurança do nosso site observou que o retorno "403" poderia ajudar uma pessoa mal-intencionada a mapear o nosso site; não tinha pensado nisso antes, mas tenho que admitir que faz sentido.

Este é um site de webforms do asp.net.

Esta pergunta foi feita ( Substituir IIS 403 por 404 para o Diretório Listagem ), mas a única resposta postada não está correta. Adicionar uma página de erro personalizada não funciona.

    
por Tom Regan 16.09.2013 / 17:16

1 resposta

0

Eu não consegui encontrar uma maneira de configurar o IIS, mas eu encontrei uma solução alternativa usando um manipulador genérico asp.net ( link , desça até a resposta por gvlahakis).

Primeiro, crie um manipulador genérico que retorne 404:

public class DirectoryBrowsingAttempt : IHttpHandler
{
    public bool IsReusable {get {return true;}
    public void ProcessRequest(HttpContext context) {context.Response.StatusCode = 404;}
}

Em segundo lugar, adicione tags ao web.config para apontar as tentativas de navegação no diretório para o manipulador acima, uma para cada pasta que você precisa proteger, nas seções httpHandlers e system.webServer. As tags abaixo protegem uma pasta chamada "js" fora da raiz.

<httpHandlers>
  <add verb="*" path="js/*" validate="false" type="MyNameSpace.DirectoryBrowsingAttempt"/>
</httpHandlers>
<system.webServer>
<handlers>
  <add name="NoAccess" verb="*" path="js/*"  preCondition="integratedMode" type="MyNameSpace.DirectoryBrowsingAttempt"/>
</handlers>

Essa solução alternativa se comporta de maneira diferente no IIS 6 versus IIS 7. Por exemplo, eu protegi uma pasta que continha as imagens do site dessa maneira: O IIS 6 ainda entregava as imagens contidas nessa pasta em páginas da Web (o comportamento desejado, apenas deseja bloquear as tentativas de navegação no diretório); O IIS 7 os bloqueou.

Provavelmente existem maneiras de usar a guia "local" no web.config para permitir que as imagens sejam exibidas substituindo o manipulador de imagens padrão, mas não desejo ir tão longe na toca do coelho.

    
por 17.09.2013 / 15:35

Tags