Plan de seguridad - G10-ISPC/Frontend-Mobile GitHub Wiki

El objetivo es desarrollar un conjunto de políticas y medidas para proteger la aplicación móvil de vulnerabilidades y ataques, asegurando la seguridad de los datos y las transacciones, y garantizando una autenticación segura mediante JWT.

Se incluye Sistema de Gestión de Riesgos de la Aplicación Móvil, asignando la frecuencia en la cual debe ejecutarse/revisarse la tarea y que sector del equipo se encarga de dicha tarea.

1. Política: Validación de Inputs

Vulnerabilidad Prevenida:

Inyección SQL.

Se deben validar todos los inputs que recibe la aplicación, tanto en el frontend como en el backend, para prevenir que usuarios malintencionados inserten código malicioso.

Medidas:

Validar tipos de datos, longitudes y formatos.

Frecuencia de Revisión/Ejecución:

Diariamente durante el desarrollo.

Semanalmente durante el mantenimiento.

Responsables:

  • Equipo de Desarrollo Frontend.

  • Equipo de Desarrollo Backend.

2. Política: Autenticación basada en JWT

Vulnerabilidad Prevenida:

Ataques de sesión (secuestro de sesión).

Ataques de fuerza bruta (DDOS).

Usar tokens JWT para autenticar a los usuarios, de modo que la autenticación no dependa de sesiones en el servidor. Cada token tendrá una duración limitada para aumentar la seguridad.

Medidas:

Implementar JWT en el backend.

Los tokens deben incluir información mínima y ser firmados con un secreto fuerte.

Utilizar un mecanismo de renovación (refresh tokens) para mantener sesiones seguras sin necesidad de autenticar constantemente.

Frecuencia de Revisión/Ejecución:

Mensualmente para revisar la seguridad de los tokens.

Cada 6 meses para evaluar y actualizar el mecanismo de autenticación.

Responsables:

  • Equipo de Desarrollo Backend.

3. Política: Protección de Datos en Tránsito con HTTPS

Vulnerabilidad Prevenida:

Interceptación de datos (man-in-the-middle attacks).

Robo de datos en tránsito.

Toda la comunicación entre el cliente y el backend debe estar cifrada usando HTTPS para evitar que los datos puedan ser interceptados y manipulados por atacantes.

Medidas:

Configurar un certificado SSL para asegurar la comunicación.

Verificar que los datos sensibles (como contraseñas) estén cifrados antes de ser transmitidos.

Frecuencia de Revisión/Ejecución:

Anualmente para renovar certificados SSL.

Cada 3 meses para verificar la configuración de HTTPS.

Responsables:

  • Equipo de Desarrollo Backend.

4. Política: Gestión de Accesos y Privilegios Mínimos

Vulnerabilidad Prevenida:

Elevación de privilegios.

Acceso no autorizado a datos sensibles.

Implementar un sistema de gestión de roles y privilegios, asegurando que cada usuario tenga acceso solo a las funcionalidades y datos que necesita.

Medidas:

En Django, usar el sistema de permisos y autenticación incorporado.

Definir roles específicos (administrador, cliente, etc.) y asignar permisos según las necesidades.

Revisar regularmente los accesos y realizar auditorías para verificar que los usuarios no tengan más privilegios de los necesarios.

Frecuencia de Revisión/Ejecución:

Mensualmente para revisar los accesos.

Cada 6 meses para realizar auditorías.

Responsables:

  • Equipo de Desarrollo Backend.

5. Política: Protección contra Cross-Site Request Forgery (CSRF)

Vulnerabilidad Prevenida:

CSRF (Cross-Site Request Forgery).

Implementar protección contra CSRF en todas las solicitudes del cliente que interactúen con el servidor.

Medidas:

En Django, habilitar el middleware de protección CSRF para las rutas que lo requieran.

Enviar el token CSRF junto con las solicitudes POST para verificar que las acciones sean realizadas por el usuario autenticado.

Frecuencia de Revisión/Ejecución:

Diariamente durante el desarrollo.

Semanalmente durante el mantenimiento.

Responsables:

  • Equipo de Desarrollo Backend.

6. Política: Auditoría y Monitoreo de Seguridad

Vulnerabilidad Prevenida:

Acceso no autorizado.

Ataques persistentes (Persistent Threats).

Implementar sistemas de monitoreo y auditoría que registren los intentos de acceso y las acciones que realicen los usuarios, para detectar patrones sospechosos.

Medidas:

Registrar toda la actividad en el backend, como intentos de login fallidos y accesos a datos sensibles.

Usar herramientas para monitoreo y detección de vulnerabilidades en tiempo real.

Configurar alertas para actividades inusuales, como múltiples intentos de login fallidos en poco tiempo.

Frecuencia de Revisión/Ejecución:

Continuamente para monitoreo en tiempo real.

Mensualmente para revisar los logs.

Responsables:

  • Equipo de Desarrollo Backend.

7. Política: Pruebas de Seguridad y Pentesting

Vulnerabilidad Prevenida:

Vulnerabilidades desconocidas.

Realizar pruebas de penetración periódicas para identificar nuevas vulnerabilidades que puedan haber surgido durante el ciclo de desarrollo o implementación de nuevas funcionalidades.

Medidas:

Utilizar herramientas para realizar pruebas de vulnerabilidades en la aplicación.

Realizar análisis de seguridad automatizados del código.

Asegurar que las dependencias de se mantengan actualizadas y libres de vulnerabilidades conocidas.

Frecuencia de Revisión/Ejecución:

Anualmente para pruebas de penetración.

Continuamente para análisis automatizados.

Responsables:

  • Equipo de Backend.

8. Copias de seguridad (Backup)

Vulnerabilidad Prevenida:

Pérdida de datos por fallos o ataques.

Medidas:

Realizar copias de seguridad periódicas de la base de datos y los archivos críticos, asegurando la encriptación de las copias y pruebas regulares de restauración.

Frecuencia de Revisión/Ejecución:

Semanalmente para copias de seguridad. Trimestralmente para pruebas de restauración.

Responsables:

  • Equipo de Desarrollo Backend.

Este plan de seguridad garantiza la protección contra las principales vulnerabilidades de la aplicación Android con backend en Django, asegurando una autenticación segura mediante JWT y siguiendo buenas prácticas de seguridad en el tratamiento de datos, accesos y comunicación en la red.