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?

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


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


0

Isso deve funcionar:

<configuration>
  <location path="FolderName">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.