En un entorno tecnológico en constante evolución, la seguridad de las aplicaciones móviles es un aspecto crítico que no debe pasarse por alto. Para las aplicaciones que siguen el modelo MVC (Modelo-Vista-Controlador), donde la vista es una app y los controladores están en diferentes servidores, es necesario implementar un sistema de seguridad robusto. En este artículo, exploraremos las principales medidas de seguridad que aplicamos a este tipo de arquitectura, haciendo especial énfasis en la encriptación de consultas y el filtrado por IP para la comunicación entre controladores.
1. Arquitectura y Modelo de Seguridad Propuesto
La arquitectura de nuestras aplicaciones sigue un modelo MVC en el cual la app sirve como la vista, instalada en los dispositivos móviles de los usuarios. Los controladores, en vez de ser uno solo, están divididos en dos niveles:
- Controlador 1: Recibe todas las solicitudes desde la app y actúa como un filtro inicial.
- Controlador 2: Gestiona las solicitudes válidas en el host del cliente y se comunica con la base de datos del cliente (el modelo).
Este diseño presenta varios puntos críticos en la seguridad, como el tráfico de datos entre los controladores y la base de datos, la autenticación de usuarios y la protección de la comunicación entre los diferentes componentes.
2. Encriptación de Consultas
El uso de encriptación en las consultas que viajan entre los controladores y la base de datos es esencial para garantizar que los datos sensibles, como información personal o financiera, estén protegidos. A continuación, algunos enfoques clave:
- Encriptación de extremo a extremo: Todas las solicitudes desde la app hacia el Controlador 1 deben estar encriptadas mediante protocolos seguros como TLS (Transport Layer Security).
- Encriptación de consultas SQL: Las consultas que se envían entre los controladores y la base de datos deben también estar encriptadas.
- Cifrado asimétrico: Se puede optar por un sistema de cifrado asimétrico para la encriptación y desencriptación de los datos.
3. Filtrado de IP y Control de Acceso
El filtrado por IP es una técnica crucial para asegurar que solo las solicitudes válidas lleguen al segundo controlador, minimizando el riesgo de ataques de DDoS o accesos no autorizados.
- Filtrado por IP en el Controlador 2: Implementar un sistema que solo permita la comunicación desde direcciones IP confiables.
- Listas blancas y negras: Crear una lista blanca de IPs que pueden interactuar con el Controlador 2.
- Autenticación basada en IP: Combinar el filtrado por IP con la autenticación de usuarios.
4. Seguridad en la Autenticación
Un sistema de autenticación robusto es fundamental para prevenir accesos no autorizados.
- Autenticación multifactor (MFA): Implementar MFA para aumentar la seguridad.
- Tokens JWT (JSON Web Token): Utilizar tokens JWT para autenticar a los usuarios.
- Refuerzo de contraseñas: Implementar políticas estrictas de contraseñas.
5. Protección Contra Ataques de Inyección
Las aplicaciones que interactúan con bases de datos suelen ser susceptibles a ataques de inyección SQL o NoSQL.
- Validación de entradas: Asegurarse de que los datos que provienen de la app Ionic sean siempre los esperados.
- rutas y ORM: Los controladores sólo aceptan peticiones a rutas controladas, estasrutas sanitizan las peticiones y después pasan un ORM que interactua con la base de datos, solamente en casos concretos.
- Consultas preparadas: Utilizar consultas preparadas para prevenir inyecciones.
6. Seguridad en la API y Comunicación entre Controladores
Es vital proteger la API interna que conecta ambos controladores.
- API Gateway: Implementar un API Gateway para gestionar y asegurar el tráfico entre los controladores.
- Tasa de Peticiones: Implementar un sistema de limitación de tasas para las peticiones.
7. Auditoría y Monitoreo Continuo
Una parte fundamental de cualquier sistema de seguridad es la capacidad de monitoreo y auditoría.
- Registros de actividad: Registrar todas las solicitudes que pasan por los controladores y los accesos a la base de datos.
- Sistemas de detección de intrusos (IDS): Implementar un sistema de detección de intrusos para detectar comportamientos sospechosos.
Conclusión
Nuestras apps disponen de la implementación de múltiples capas de seguridad. Desde la encriptación de las consultas y el filtrado por IP, hasta la autenticación robusta y la protección contra inyecciones, cada componente de la aplicación debe estar adecuadamente asegurado para minimizar riesgos.