Bloquear o acesso ao subdiretório usando Web.config

8

Eu tenho um subdiretório no meu projeto ASP.NET que contém arquivos utilitários. Eles são necessários pelo código em tempo de execução, mas não quero que eles sejam visíveis na Web.

Qual é a sintaxe em um arquivo Web.config para bloquear o acesso a todos os usuários em um único subdiretório e todo o seu conteúdo?

Joel Spolsky
fonte

Respostas:

15

O IIS 7 possui um novo recurso "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 faz com que http: // yoursite / bin não seja viável (mas http: // yoursite / binário ainda funciona)

Confira: http://learn.iis.net/page.aspx/143/how-to-use-request-filtering

MattB
fonte
2
Mas isso também vai bloquear yoursite / bla / bin / teste .... :-(
Carsten Schütte
Não é uma resposta para a pergunta, mas também é útil para o tópico em questão. Você pode usar o HttpHandlers para bloquear extensões de arquivo específicas que você deseja também. Esta é uma boa prática para fazer bem, por exemplo, bloquear todos os arquivos de origem / banco de dados etc.
rolos
1

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, permitindo a autenticação baseada em formulários e uma considerável bagunça, mas eu simplesmente moveria os arquivos para fora da pasta wwwroot.

JR

John Rennie
fonte
0

Isso deve funcionar:

<configuration>
  <location path="FolderName">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>
John Rasch
fonte
2
Isso não funciona porque os arquivos são arquivos .txt ... Acho que John Rennie está certo que o ASP.NET não tem chance de interferir nos arquivos .txt.
Joel Spolsky
Isso é bom saber, eu sempre exclusivamente mantidos arquivos servidos através de manipuladores de ASP.NET em meus diretórios acessível através da web assim que eu nunca tive esse problema
John Rasch