Interrelación entre Ciberseguridad y Testing - G10-ISPC/Frontend-Mobile GitHub Wiki

  1. 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.

  1. 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.

  1. 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.