Si no puedes gobernarte a ti mismo... ¿cómo sabrás gobernar a los demás?
Confucio

Archivos del día 10 de March del 2008

Evitar el acceso a recursos web

filterchain.gifPreguntaba Manu en [Struts] - Input y Forwards de un Action cómo se puede evitar con un filtro el acceso a todos los recursos que no sean acciones en nuestra aplicación.

Es posible que queramos limitar el acceso vía web a los recursos de nuestras aplicaciones, como por ejemplo a nuestras imágenes o páginas JSP. Típicamente será por razones de seguridad o auditoría. 

Una posible solución a la pregunta de Manu podría ser implementar un filtro (una clase que extienda de javax.servlet.Filter) que se invoque en todas las peticiones al servidor (o en las peticiones que queramos filtrar). En nuestra aplicación se declararía en nuestro fichero web.xml: 

<filter>

      <filter-name>FiltroRecursos</filter-name>

      <display-name>Filtrado de los recursos permitidos vía web</display-name>

      <description>Filtrado de los recursos permitidos vía web</description>

      <filter-class>es.lycka.bonita.seguridad.FiltroRecursos</filter-class>

</filter>

<filter-mapping>

      <filter-name>FiltroRecursos</filter-name>

<url-pattern>*</url-pattern>

</filter-mapping>

En el método doFilter de nuestro filtro (es.lycka.bonita.seguridad.FiltroRecursos) podemos saber qué recurso se está solicitando, utilizando el método request.getRequestURI(). De esta forma podemos permitir su acceso o denegarlo redirigiendo a una página de error. El criterio será el que nos interese, como por ejemplo que el recurso no esté en una lista de recursos válidos, o que su extensión no se acepte.