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

Relación de Requerimientos de Usuario con Políticas de Seguridad

Al desarrollar una aplicación, los usuarios generalmente no solicitan explícitamente medidas de seguridad detalladas. Sin embargo, la implementación de políticas robustas es importante para asegurar la protección contra amenazas y vulnerabilidades, cumpliendo con las buenas prácticas de ciberseguridad. A continuación, se van a detallar las políticas que el usuario podría no solicitar directamente, pero que deben implementarse para garantizar un sistema seguro.

1. Validación de Inputs

Relación con el requerimiento de usuario: Los usuarios finales raramente solicitan directamente la validación de inputs. Sin embargo, esta es una medida esencial para prevenir inyecciones de código malicioso, como ataques de inyección SQL, que pueden comprometer la integridad de la base de datos y el acceso a información sensible.

Acciones clave:

  • Validar tipos de datos y longitudes.
  • Usar expresiones regulares para formatos específicos (por ejemplo, correos electrónicos).
  • Implementar la validación tanto en el frontend como en el backend.

2. Autenticación basada en JWT

Relación con el requerimiento de usuario: Este es uno de los pocos requerimientos que los usuarios suelen solicitar explícitamente. JWT (JSON Web Token) permite una autenticación segura sin la necesidad de manejar sesiones en el servidor, lo que mejora la eficiencia y la escalabilidad.

Acciones clave:

  • Firmar los tokens JWT con un secreto fuerte.
  • Implementar mecanismos de renovación de tokens.
  • Limitar la información incluida en los tokens para minimizar el riesgo en caso de intercepción.

3. Protección de Datos en Tránsito con HTTP

Relación con el requerimiento de usuario: Aunque los usuarios rara vez piden explícitamente el uso de HTTP, esta es una medida crucial para proteger la confidencialidad y la integridad de los datos mientras viajan entre el cliente y el servidor.

Acciones clave:

  • Verificar que la transmisión de datos sensibles esté cifrada.

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

Relación con el requerimiento de usuario: Los usuarios no suelen solicitar de forma explícita un control detallado de acceso, pero es esencial implementar un sistema de gestión de roles y privilegios para proteger los datos sensibles.

Acciones clave:

  • Implementar roles en el sistema (administrador, cliente, etc.).
  • Realizar auditorías periódicas de acceso para asegurarse de que los usuarios no tengan más permisos de los necesarios.
  • Usar el sistema de autenticación y permisos incorporado en Django.

5. Protección contra Cross-Site Request Forgery (CSRF)

Relación con el requerimiento de usuario: Los usuarios rara vez son conscientes de vulnerabilidades como CSRF, pero la protección contra este tipo de ataques es fundamental para evitar que acciones malintencionadas se realicen en nombre del usuario autenticado.

Acciones clave:

  • Habilitar el middleware CSRF en Django.
  • Asegurarse de que todas las solicitudes POST incluyan un token CSRF válido.

6. Auditoría y Monitoreo de Seguridad

Relación con el requerimiento de usuario: Aunque no es solicitado directamente por los usuarios, la auditoría y el monitoreo continuo son esenciales para detectar intentos de acceso no autorizados y posibles amenazas en tiempo real.

Acciones clave:

  • Implementar sistemas de monitoreo y registro de accesos.
  • Configurar alertas automáticas para actividades inusuales, como múltiples intentos de acceso fallidos.
  • Realizar auditorías regulares de los registros de acceso.

7. Pruebas de Seguridad y Pentesting

Relación con el requerimiento de usuario: Los usuarios rara vez solicitan pruebas de seguridad explícitamente, pero realizar pentesting (pruebas de penetración) periódicamente es una práctica esencial para identificar vulnerabilidades desconocidas que podrían surgir durante el desarrollo o la implementación de nuevas funcionalidades.

Acciones clave:

  • Usar herramientas automatizadas para realizar análisis de seguridad del código.
  • Realizar pentesting anual para identificar vulnerabilidades nuevas.
  • Mantener actualizadas todas las dependencias del proyecto.