Eu tenho um subdiretório no meu projeto ASP.NET que contém arquivos utilitários. Eles são necessários para o código em tempo de execução, mas não quero que fiquem visíveis na web.
Qual é a sintaxe em um arquivo Web.config para bloquear o acesso de todos os usuários a um único subdiretório e a todo o seu conteúdo?
Responder1
O IIS 7 possui um novo recurso de "filtragem de solicitação". Você provavelmente deseja usar a configuração de segmentos ocultos:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="BIN"/>
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Isso causahttp://seusite/binnão ser utilizável (mashttp://seusite/binárioainda funciona)
Confira: http://learn.iis.net/page.aspx/143/how-to-use-request-filtering
Responder2
Seu problema é que, se o IIS simplesmente retornar os arquivos, o ASP.Net nunca terá a chance de interferir. Acredito que isso pode ser feito habilitando a autenticação baseada em formulários e fazendo bastante bagunça, mas eu simplesmente moveria os arquivos para fora da pasta wwwroot.
Jr.
Responder3
Isso deve funcionar:
<configuration>
<location path="FolderName">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Responder4
É uma pergunta antiga, mas é um simples drop-in web.config
para qualquer diretório no caminho do servidor web. Ele remove todas as funções de usuário e define o acesso padrão como negado. Simples e sem necessidade de configuração.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Deny" users="*" />
</authorization>
</security>
</system.webServer>
</configuration>