Seguridad en aplicaciones SPA

seg

Ayer tuvimos una interesante mesa redonda, done expusimos nuestras experiencias en el desarrollo y planificación de aplicaciones web siguiendo la filosofía SPA «Single Page Application».

En este debate expuse una duda sobre la seguridad de este tipo de aplicaciones, porque creo que no está bien resuelta. Pero por el comentario de Alfredo y de su compañero de Plain Concepts creo que no quedo del todo claro mi punto de vista.

Primero de todo quiero aclarar que no dije o eso espero :), que la seguridad de una aplicación web dependa de que si un usuario pueda o no ver tu código. Por eso me gustaría hacer un pequeño resume a ver si de esa manera puedo exponer mejor mi duda y podamos debatir sobre el tema.

Seguridad de los servicios y datos

Esta parte bajo mi punto de vista está bien resuelta con la utilización de oauth y los tokens tanto para la autentificación como para la autorización al acceso de recursos.

Seguridad de la interfaz de usuario

Esta parte es la que me chirria si nos basamos en la filosofía SPA,  tener las vistas completamente en el cliente y gestionar todo desde JavaScript.

La parte de autentificación no me preocupa porque podemos utilizar el mismo sistema que para los servicios. Pero si me preocupa la autorización de la partes privadas de la interfaz. Cualquier aplicación profesional te pedirán que dependiendo del rol del usuario pueda acceder a acciones del menú o a vistas que otro usuario no tendría que tener acceso.

Por la misma naturaleza de JavaScript si gestionamos esto desde el cliente personalmente me parece poco seguro «es fácilmente accesible y modificable» y vuelvo a repetir que mis servicios si que están protegidos.

Mi solución

La opción que he utilizado para evitar este problema desde angularJS , es al definir el enrutamiento de los controladores y las vista, utilizar RequireJs para cargarlas vistas desde el servidor de forma perezosa. De esta manera puedo utilizar la seguridad de ASP.NET y la localización de los recursos y solo cargar en el cliente el HTML validado desde el servidor sin perder la funcionalidad SPA.

Con este mezcla de cliente-servidor evito dar una responsabilidad innecesaria al cliente y evitar futuros problemas de seguridad.

Debate

Ahora me gustaría saber vuestra opinión sobre el tema  y si habéis  encontrado otra alternativa  para solucionar este problema. Como he comentado antes para mi no se puede resolver de una forma natural con una aplicación SPA  gestionando las vistas completamente desde el cliente.

Espero vuestros comentarios 😉

https://plus.google.com/u/0/events/cufio59kfjdrd74dp5iha9lr7l0?authkey=CNC-4OOugMmNtAE

Scroll al inicio