Autorización IIS vs. ASP.NET: ¿la forma más fácil de proteger los archivos estáticos?

StackOverflow https://stackoverflow.com/questions/1015173

  •  06-07-2019
  •  | 
  •  

Pregunta

Digamos que tengo lo siguiente en un web.config:

<allow roles="Developers" />
<deny users="*"/>

Esto bloquea el acceso en .aspx, .asmx y otros tipos de archivos .NET, pero aún permite que usuarios no autorizados abran archivos estáticos como image.jpg. Entiendo por qué no se solicita información de autorización a web.config cuando alguien solicita image.jpg (no es un tipo .NET e IIS puede omitirlo), pero ¿cómo puedo bloquear una aplicación completa?

Los

consejos que he encontrado en línea incluyen:

  • crea una entrada <location> para el directorio en cuestión e IIS / .NET lo recogerá. (Parece que no.)
  • necesita escribir su propio filtro ISAPI y asignar todas las extensiones de archivos confidenciales a eso.
  • no necesita escribir su propio filtro ISAPI, solo mapeando las extensiones a aspnet_isapi.dll lo hará.
  • no necesita editar IIS en absoluto, solo cree una entrada httpHandler en web.config para sus extensiones. (Realmente prefiero no intentar hacer esto para cada extensión de la aplicación).

Nada de esto funciona tan fácilmente como recuerdo estar en Apache. ¿Qué es lo más simple que podría funcionar para pedirle a un visitante una contraseña y no entregar ningún archivo (estático o no) a ningún usuario que no la tenga?

¿Fue útil?

Solución

Habilite asignación de comodines para IIS 6 . Esto enviará todos los archivos a través de la canalización de ASP.NET, garantiza que la autenticación de formulario se realice para todos los archivos. Se degradará el rendimiento (no sé cuánto).

Para IIS 5, um, actualice a IIS 6.

Usted enumera 4 ideas:

  • la ubicación solo funciona si tiene una asignación de comodines (o extensiones específicas asignadas).

  • ¿Quién quiere escribir un filtro isapi? No puede hacerlo fácilmente en idiomas administrados a menos que tenga IIS7. ¿Y quién quiere escribir un filtro isapi de c ++?

  • la asignación de comodines funciona con la advertencia (rendimiento) anterior

  • Nuevamente, la última opción no funcionará sin registrar esas extensiones específicas con IIS y enrutarlas a través de aspnet.

Otros consejos

Una manera simple y agradable es actualizar a IIS 7- ahora tiene una tubería integrada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top