IIS7: Como bloquear o acesso com um arquivo web.config?

12

Eu sei que o IIS7 me permite ter uma configuração por diretório com o arquivo xml web.config. Eu tenho um diretório com alguns arquivos de configuração que não querem ser acessíveis pela web. Um arquivo web.config local proibindo o acesso de leitura a ele seria uma boa solução.

Qual deve ser o conteúdo de um arquivo web.config para proibir o acesso web aos arquivos?

Edit: Estou tentando colocar um arquivo web.config com esses conteúdos em um arquivo:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
            <system.web>
                    <authorization>
                            <deny users="*" /> <!-- Denies all users -->
                    </authorization>
            </system.web>
</configuration>

Mas ainda posso acessar diretamente um arquivo dentro do diretório. O que há de errado com isso? Como faço para depurar o que está acontecendo?

    
por neves 08.10.2009 / 21:22

4 respostas

11

Você está usando o system.web. No IIS7, você deve usar system.webServer. Isso bloqueará todos os tipos de arquivos, não apenas os arquivos ASP.NET. Por exemplo, você pode proteger com senha jpg, gif, txt e todos os tipos de arquivos.

Seria algo parecido com isto:

  <system.webServer>
      <security>
          <authorization>
              <remove users="*" roles="" verbs="" />
              <add accessType="Allow" roles="Administrators" />
          </authorization>
      </security>
  </system.webServer>

E se você quiser configurá-lo para apenas um arquivo:

 <location path="dontlook.jpg">
     <system.webServer>
         <security>
             <authorization>
                 <remove users="*" roles="" verbs="" />
                 <add accessType="Allow" roles="Administrators" />
             </authorization>
         </security>
     </system.webServer>
 </location>
    
por 09.10.2009 / 04:39
5

eu acho que isso pode resolver o seu problema.
coloque este web.config no diretório que contém o diretório de destino:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <hiddenSegments>
     <add segment="target directory name"/>
    </hiddenSegments>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>
    
por 04.12.2012 / 23:43
3

Você pode usar os nós do Local no Web.config. Aqui está uma explicação detalhada sobre msdn ; em poucas palavras:

<location path="Subdirectory">
    <system.web>
        <authorization>
            <deny users="*"/> <!-- Denies all users -->
        </authorization>
    </system.web>
</location>
<location path="Public_Directory">
    <system.web>
        <authorization>
            <allow users="*"/> <!-- Allows all users -->
        </authorization>
    </system.web>
</location>

Você também pode usar o? curinga para especificar que você deve (permitir / negar) usuários anônimos

    
por 08.10.2009 / 21:50
0
  • * significa todos os usuários logados.
  • ? significa usuários anônimos.

Você deve usar ? .

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
</configuration>
    
por 07.06.2015 / 12:11