Interrelación entre Ciberseguridad y Testing - G10-ISPC/Frontend-Mobile GitHub Wiki
-
Introducción
La interrelación entre ciberseguridad y programación es fundamental en el desarrollo de la aplicación móvil. La autenticación y autorización se integraron desde el inicio del proyecto para garantizar un sistema seguro y mitigar riesgos potenciales. La planificación de la seguridad no es una tarea secundaria, sino un proceso continuo, crítico para proteger datos y mantener la integridad del sistema ante posibles vulnerabilidades.
-
Políticas de Seguridad
A) Política de Autenticación Basada en JWT (JSON Web Tokens)
Elección: JWT fue seleccionado por su capacidad para manejar sesiones distribuidas con alta escalabilidad, seguridad, y compatibilidad con diferentes plataformas.
Vulnerabilidades Prevenidas:
Secuestro de sesión. Ataques de fuerza bruta contra las credenciales. Medidas Implementadas:
Uso de tokens con tiempos de vida cortos para reducir el impacto de fugas. Tokens de actualización (refresh tokens) para mantener sesiones de usuario activas y seguras. Firma de los tokens con un secreto fuerte para evitar falsificación.
Frecuencia de Revisión:
Mensualmente: Revisión del uso adecuado de los tokens y su caducidad. Cada 6 meses: Evaluación del mecanismo de autenticación para mejorar la protección contra nuevos tipos de ataques.
Responsables:
Equipo de Desarrollo Backend: Implementación y mantenimiento del sistema de autenticación. Equipo de Seguridad: Auditoría periódica del sistema de autenticación.
B) Política de Autorización Basada en Roles (RBAC)
Implementación:
Admin: Acceso completo al panel de administración y gestión de usuarios/productos. Cliente: Acceso limitado a la compra y visualización de productos.
Control en Backend: Aplicación de permisos mediante clases personalizadas en Django Rest Framework como IsAdmin y IsClient.
Control en Frontend: Validación del rol de usuario usando el token JWT para habilitar/deshabilitar funcionalidades dinámicamente.
Frecuencia de Revisión: Cada 6 meses: Verificación de roles y ajuste de permisos según los cambios en la lógica de negocio.
Responsables:
Equipo de Desarrollo Backend. Equipo de Seguridad.
C) Política de Protección de Datos en Tránsito con HTTPS
Vulnerabilidades Prevenidas: Interceptación de datos. Robo de datos durante su transmisión.
Medidas Implementadas: Configuración de HTTPS usando certificados SSL/TLS válidos. Cifrado de datos sensibles tanto en tránsito como en las respuestas de la API.
Frecuencia de Revisión: Anualmente: Renovación de certificados SSL/TLS. Cada 3 meses: Verificación de la configuración de HTTPS para detectar posibles vulnerabilidades.
Responsables: Equipo de Desarrollo Backend. Equipo de Seguridad.
-
Plan de Pruebas de Seguridad
El objetivo de las pruebas de seguridad es garantizar que las políticas implementadas funcionan correctamente, protegiendo la aplicación de amenazas conocidas.
Pruebas y Frecuencia
Mensualmente: Revisión del uso adecuado de los tokens JWT. Pruebas de autenticación y autorización con simulación de usuarios con distintos roles (admin, cliente).
Cada 6 meses: Auditoría completa del mecanismo de autenticación para asegurar resistencia ante ataques de fuerza bruta.
Cada 3 meses: Verificación de la configuración HTTPS y comprobación del cifrado de datos sensibles en tránsito.
Responsables: Equipo de Desarrollo Backend: Realización de pruebas internas y mantenimiento de la configuración. Equipo de Seguridad: Auditoría y análisis de riesgos.
Conclusión
El plan de pruebas de seguridad y gestión de riesgos permite validar la eficacia de los controles implementados. La autenticación y autorización basadas en JWT, junto con HTTPS, crean una capa de protección robusta. La planificación y ejecución rigurosa de estas pruebas garantizan que la aplicación se mantenga segura, confiable y preparada para enfrentar nuevas amenazas.La seguridad y el testing están íntimamente relacionados para asegurar que los controles de seguridad funcionan como se espera. Cada política definida se valida continuamente mediante pruebas que simulan ataques y verifican el cumplimiento de las medidas de protección. El testing de seguridad no es solo un paso en el desarrollo, sino una actividad recurrente para: Detectar vulnerabilidades: Como el secuestro de sesión o ataques de fuerza bruta antes de que puedan ser explotados. Verificar autorizaciones correctas: Asegurando que los roles de usuario solo puedan acceder a las funcionalidades permitidas. Comprobar protección de datos: Mediante pruebas regulares de HTTPS y cifrado en tránsito.
Esta sinergia entre ciberseguridad y pruebas garantiza que cada actualización en la aplicación no solo mejore la funcionalidad, sino que también mantenga o eleve el nivel de seguridad del sistema.