¿Las aplicaciones de SPA tienen consideraciones de seguridad diferentes a las de los sitios HTML5?

3

Estoy buscando Aplicaciones de una sola página que se utilizan tanto para el desarrollo móvil (PhoneGap) como para los sitios web normales.

Dado que la aplicación se puede cargar desde una copia sin conexión , puede ejecutarse desde http://localhost , o se puede empaquetar como una aplicación visible en Apple App Store o Android Play Store (etc.), el enfoque estándar de configuración de credenciales para el usuario y acceso a los recursos es diferente.

Es decir, Microsoft tiene una infraestructura completa que habilita OAuth para aplicaciones nativas (aunque no veo si / cómo se dirigen a las aplicaciones SPA).

Pregunta

  • ¿Las aplicaciones de SPA son más o menos inmunes a CSRF, XSS u otros ataques normales?

  • ¿Qué sucede con las aplicaciones SPA incorporadas en PhoneGap o alguna otra aplicación?

  • Dado que las aplicaciones SPA pueden leer los datos REST en las URL que se le pasan, ¿qué protecciones existen desde el teléfono o las aplicaciones web normales que responden de esta manera?

  • ¿Hay conceptos erróneos acerca de cómo hacer aplicaciones de SPA que conducen a vulnerabilidades de seguridad? (He visto a menudo a los desarrolladores de aplicaciones preguntar cómo usar el "cifrado" de Javascript en lugar de HTTPS aquí)

  • ¿Son las preocupaciones de autenticación diferentes? (Uso de sesión de HTML5 frente a parámetros pasados a la segunda página de SPA)

No he visto mucha discusión sobre esta nueva forma de desarrollar una aplicación a la luz de la seguridad, y sospecho que hay muchos errores de seguridad aquí.

    
pregunta random65537 26.08.2013 - 17:04
fuente

2 respuestas

5

¿Las aplicaciones de SPA son más o menos inmunes a CSRF, XSS u otros ataques normales?

En general, no. La interacción entre el cliente y el servidor debe ser similar, si no es idéntica a la de una aplicación web sin formato AJAXifed. Todavía está tratando con las solicitudes y respuestas HTTP que provienen de un cliente que no es de confianza y, por lo tanto, deben tratarse con cuidado, pero no hay un riesgo adicional particular que yo vea como una regla.

Sin embargo:

Hay dos de los 10 principales de OWASP que tienen más probabilidades de ser protegidos indebidamente.

1) Exposición de datos sensibles

Si no está atento a los datos que contiene la carga inicial de la página, podría estar enviando fácilmente datos que no deberían estar necesariamente expuestos a todos los usuarios. Debido a que la página completa no es generalmente visible en el navegador en un SPA, esto puede calmar a un desarrollador descuidado en una falsa sensación de seguridad.

2) Falta el control de acceso a nivel de función

En mi opinión, este es el más importante cuando se trata de SPA. Ya que está moviendo las funciones y la lógica fuera del servidor y fuera del cliente, es muy, muy fácil proporcionarle a un cliente acceso a funciones que no está autorizado a usar. Hasta cierto punto, esto puede ser mitigado por el hecho de que sus puntos finales de datos también deben protegerse por separado y esto debe hacer que cualquier intento de usar funciones no autorizadas falle, pero este es el que me produce una acidez estomacal.

¿Hay ideas erróneas sobre cómo hacer aplicaciones de SPA que conducen a vulnerabilidades de seguridad?

Sí. Un error importante (en cualquier caso, por parte de los desarrolladores menos conscientes de la seguridad) es que la lógica de la aplicación aún le pertenece a usted y que puede confiar en JavaScript en el navegador para cosas como la validación de entrada y la autorización de la función. Como todos sabemos, no puedes. Si está en el cliente, no te pertenece. Cualquier validación y autorización que ocurra en el cliente es UX, no la seguridad de la aplicación. Sus puntos finales en el servidor son, en última instancia, responsables de garantizar la seguridad de los datos y la aplicación.

¿Son las preocupaciones de autenticación diferentes? (Uso de sesión de HTML5 frente a parámetros pasados a la segunda página de SPA)

No es que yo pueda pensar. Recuerde, los SPA no son un modelo fundamentalmente diferente, solo una nueva forma de permitir que los usuarios interactúen con una aplicación web de una manera que aproveche las capacidades modernas del navegador para brindar una mejor experiencia de usuario.

    
respondido por el Xander 26.08.2013 - 17:58
fuente
1

Yo diría que los SPA son más vulnerables al secuestro JSON (que es una forma de CSRF) porque muchas de estas aplicaciones dependen de JSON para pasar información. Este es un ataque que permite que un sitio malintencionado recupere y procese datos en lugar de la comunicación de una manera que normalmente se ve con CSRF.

Phil Haack escribió un gran artículo que profundiza en cómo funciona esto .

    
respondido por el Abe Miessler 26.08.2013 - 17:58
fuente

Lea otras preguntas en las etiquetas