Seguridad
Una cadena de filtros antes del DispatcherServlet.
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