Tengo un subdirectorio en mi proyecto ASP.NET que contiene archivos de utilidad. El código los necesita en tiempo de ejecución, pero no quiero que sean visibles en la web.
¿Cuál es la sintaxis en un archivo Web.config para bloquear el acceso de todos los usuarios a un único subdirectorio y a todo su contenido?
Respuesta1
IIS 7 tiene una nueva función de "filtrado de solicitudes". Probablemente quieras utilizar la configuración de segmentos ocultos:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="BIN"/>
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Esto causahttp://tusitio/binno ser útil (perohttp://tusitio/binariotodavía funciona)
Verificar: http://learn.iis.net/page.aspx/143/how-to-use-request-filtering
Respuesta2
Su problema es que si IIS simplemente devuelve los archivos, ASP.Net nunca tendrá la oportunidad de interferir. Creo que se puede hacer habilitando la autenticación basada en formularios y haciendo muchas cosas, pero simplemente movería los archivos fuera de la carpeta wwwroot.
J.R.
Respuesta3
Esto debería funcionar:
<configuration>
<location path="FolderName">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Respuesta4
Es una pregunta antigua, pero se trata de un sencillo acceso directo web.config
para cualquier directorio en la ruta del servidor web. Elimina todos los roles de usuario y luego establece el acceso predeterminado para denegar. Sencillo y sin necesidad de configuración.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Deny" users="*" />
</authorization>
</security>
</system.webServer>
</configuration>