IIS7: Come bloccare l'accesso con un file web.config?


14

So che IIS7 mi permette di avere una configurazione per directory con il file xml web.config. Ho una directory con alcuni file di configurazione che non vogliono essere accessibili dal web. Un file web.config locale che vieta l'accesso in lettura sarebbe una buona soluzione.

Quali dovrebbero essere i contenuti di un file web.config per vietare l'accesso Web ai file?

Modifica: sto cercando di inserire un file web.config con questi contenuti in un file:

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

Ma posso ancora accedere direttamente a un file all'interno della directory. Che cosa c'è che non va? Come posso eseguire il debug di ciò che sta accadendo?

Risposte:


12

Stai usando system.web. In IIS7, invece, dovresti usare system.webServer. Questo bloccherà tutti i tipi di file, non solo i file ASP.NET. Ad esempio, è possibile proteggere con password jpg, gif, txt e tutti i tipi di file.

Sarebbe simile a questo:

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

E se vuoi impostarlo per 1 solo file:

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

Ho incontrato la mia risposta più di un anno dopo e volevo aggiungere una nota in più. È necessario assicurarsi che sia abilitata anche l'autorizzazione per moduli o Windows, altrimenti sarà utile solo la regola di rimozione. Se hai abilitato l'autenticazione di Windows, ti verrà chiesto di inserire le tue credenziali.
Scott Forsyth - MVP

+1 Finalmente! Ho trascorso 3 ore a trovare questo! Grazie
hofnarwillie il

5

penso che questo possa risolvere il tuo problema.
posizionare questo web.config nella directory che contiene la directory di destinazione:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <hiddenSegments>
     <add segment="target directory name"/>
    </hiddenSegments>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>

2
Potresti verificarlo prima di inviarlo come risposta.
James A Mohler,

Questo funziona per me. Inoltre, tieni presente che puoi inserire un nome file come segmento.
Soenhay,

4

È possibile utilizzare i nodi Location su Web.config. Ecco una spiegazione dettagliata su msdn ; in breve:

<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>

Puoi anche usare il? carattere jolly per specificare che è necessario (consentire / negare) utenti anonimi


In che modo questo file bloccherebbe l'accesso alla directory corrente, ma consentirebbe la directory "css"? manca il tag <configuration> attorno ad esso.
neves

La tua autorizzazione consente solo agli utenti autenticati. Se desideri utenti non autenticati, devi includere allow users = "?" anche.
Nissan Fan,

0
  • * indica ogni utente connesso.
  • ? significa utenti anonimi.

È necessario utilizzare ?.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
</configuration>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.