Pregunta IIS7: ¿Cómo bloquear el acceso con un archivo web.config?


Sé que IIS7 me permite tener una configuración por directorio con el archivo web.config xml. Tengo un directorio con algunos archivos de configuración que no quieren ser accesibles desde la web. Un archivo web.config local que prohíba el acceso de lectura sería una buena solución.

¿Cuál debería ser el contenido de un archivo web.config para prohibir el acceso web a los archivos?

Editar: Estoy tratando de poner un archivo web.config con estos contenidos en un archivo:

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

Pero todavía puedo acceder directamente a un archivo dentro del directorio. ¿Qué tiene de malo? ¿Cómo depuro lo que está pasando?


12
2017-10-08 19:22


origen




Respuestas:


Estás utilizando system.web. En IIS7, debe usar system.webServer en su lugar. Esto bloqueará todos los tipos de archivos, no solo los archivos ASP.NET. Por ejemplo, puede proteger con contraseña jpg, gif, txt y todo tipo de archivos.

Se vería algo como esto:

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

Y si quieres configurarlo para solo 1 archivo:

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

11
2017-10-09 02:39



Me encontré con mi propia respuesta más de un año después y quería agregar una nota adicional. Debe asegurarse de que la autenticación de formularios o ventanas también esté habilitada, de lo contrario, solo la regla de eliminación será útil. Si habilitó la autenticación de Windows, se le solicitará que ingrese sus credenciales. - Scott Forsyth - MVP
+1 ¡Finalmente! Pasé 3 horas encontrando esto! Gracias - hofnarwillie


Creo que esto puede resolver tu problema.
Coloque este web.config en el directorio que contiene el directorio de destino:

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

5
2017-12-04 22:43



¿Podrías verificar esto antes de enviar esto como una respuesta? - James A Mohler
Esto funciona para mi Además, tenga en cuenta que puede poner un nombre de archivo como un segmento. - Soenhay


Puede utilizar los nodos de ubicación en el Web.config. Aquí hay una explicación detallada sobre msdn ; en una palabra:

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

También puedes usar el? comodín para especificar que debe (permitir / denegar) usuarios anónimos


3
2017-10-08 19:50



¿Cómo este archivo bloquearía el acceso al directorio actual, pero permitiría al directorio "css"? falta la etiqueta <configuration> a su alrededor. - neves
Tu permiso solo permite usuarios autenticados. Si desea usuarios no autenticados, debe incluir permitir usuarios = "?" también. - Nissan Fan


  • * significa cada usuario registrado.
  • ? significa usuarios anónimos.

Debes usar ?.

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

0
2018-06-07 10:11