0%
Seguridad con Spring Security

Seguridad

Una cadena de filtros antes del DispatcherServlet.

15-20 min

Seguridad con Spring Security

La seguridad escrita a mano en los controladores siempre falla de la misma manera. Se añade una comprobación al principio de cada método sensible — if (session.getAttribute("user") == null) return "redirect:/login"; — y funciona, hasta el día en que se escribe un método nuevo sin esa comprobación. El fallo no está en el código de seguridad: está en su ausencia en un punto concreto, y nada avisa de esa ausencia.

Es la diferencia de naturaleza entre un control por lista blanca y uno por lista negra. Proteger cada pantalla individualmente equivale a decidir que una pantalla es pública por defecto. Y las pantallas se multiplican más rápido que las revisiones de código, y un olvido no provoca ningún error: la página funciona, simplemente es accesible para todo el mundo.

Spring Security invierte este comportamiento por defecto. Se inserta antes del DispatcherServlet, en forma de cadena de filtros de servlet, y aplica una política declarada en un único lugar. Una petición a una URL no prevista por la política no llega a ningún controlador: la infraestructura la rechaza. Añadir una pantalla no crea, por tanto, ningún agujero — en el peor de los casos queda inaccesible, y eso se nota de inmediato.

Comentarios

Los comentarios funcionan con GitHub Discussions

Inicia sesión con GitHub para participar en la discusión

¡Enlace copiado!