Ciberseguridad - ISPC-TSDW/Libroteka.app GitHub Wiki
Introducción
Siempre es importante dentro de una empresa tener la gestión fundamental en los empleados, por lo cual gracias a ellos se puede evitar el error humano para proteger el sistema y en la información que se tiene dentro del mismo, la importancia de constar con los usuarios es mejorar el sistema.
Para que ello sea factible es necesario constar con usuarios que sean responsables en el contexto de ciberseguridad en lo que se tiene que establecer filtros, pruebas y controles en la gestión y relación con los empleados, en el cual siempre se toma en cuanta la firma y la colaboración de contrato de cada usuario.
Siempre es colectivo y fundamental que los usuarios consten con requisitos de seguridad que los cuales constan con un seguimiento, un orden y una implementación en cada aparato disponible, tener en cuenta los términos de las políticas, el uso correcto del correo de la corporación, el orden de la información, el tipo de aplicaciones y mejorar en el ámbito empresarial, conociendo así cuales se conozcan las altas y bajas del sistema que pueden llegar a cambiar el proceso de cada aparato.
La importancia que un empleado conste con los requisitos dentro de una institución es dar información a cada uno de ellos y ofrecer capacitaciones y mejorar en el ámbito empresarial, conociendo así cuáles procesos son más importantes, en las cuales se tiene ámbitos de mejora y tener un proceso el cual se conozcan las altas y bajas del sistema que puedan llegar a cambiar el proceso de cada aparato.
Sprint 1 - Plan de Seguridad
Una política de seguridad de la información y ciberseguridad es un conjunto de reglas y procedimientos que establecen cómo una organización debe proteger sus activos físicos y de tecnología de la información (TI). Su objetivo es garantizar la confidencialidad, integridad y disponibilidad de la información.
Las políticas de seguridad de la información y ciberseguridad son documentos que se actualizan continuamente para adaptarse a los cambios en las tecnologías, vulnerabilidades y requisitos de seguridad.
Para desarrollar un plan de seguridad robusto, es esencial partir de un análisis detallado de las vulnerabilidades a las que puede estar expuesta nuestra aplicación móvil y, posteriormente, implementar políticas de seguridad basadas en las mejores prácticas y normas internacionales. A continuación, describimos este plan de manera integral.
1. Identificación de Ciberataques Potenciales
De acuerdo con el análisis realizado, nuestra aplicación podría ser vulnerable a varios tipos de ciberataques comunes en aplicaciones móviles. Algunos de estos ataques incluyen:
- Malware, que puede comprometer los dispositivos y redes al instalar software malicioso.
- Phishing, donde los atacantes engañan a los usuarios para que revelen credenciales sensibles.
- Ataques de día cero, los cuales aprovechan vulnerabilidades aún no parcheadas.
- Ransomware, que secuestra datos a través del cifrado y exige un rescate.
- Ataques con contraseñas, en los que se prueban múltiples combinaciones de credenciales para obtener acceso.
- Denegación de servicio (DoS y DDoS), donde el sistema se ve abrumado por un volumen masivo de tráfico.
- Inyección SQL, un método que manipula bases de datos mediante consultas maliciosas.
- Man-in-the-middle (MitM), que intercepta comunicaciones no cifradas para robar o modificar información.
2. Prevención de Ciberataques
Una vez identificados los posibles ataques, es fundamental establecer políticas que protejan la aplicación y sus usuarios. Entre las principales medidas preventivas se encuentran el uso de contraseñas complejas, la habilitación de autenticación basada en JWT (JSON Web Tokens), la actualización constante del software y sistemas operativos, el uso de redes privadas virtuales (VPN) para proteger las comunicaciones en redes públicas, y la implementación de firewalls y software antivirus para bloquear malware. Además, se recomienda hacer copias de seguridad periódicas de la información crítica y cifrar tanto los datos en tránsito como en reposo para prevenir ataques como el ransomware o el MitM.
3. Plan de Seguridad y Políticas Específicas
Control de Acceso y Autenticación
Una de las primeras políticas a implementar es el control de acceso. Para ello, se utiliza JWT como el sistema principal de autenticación. JWT permite una autenticación sin necesidad de almacenar sesiones en el servidor, y ofrece un control de acceso seguro al incluir en el token información clave, como el ID del usuario y su rol.
El flujo de autenticación basado en JWT se resume en los siguientes pasos:
- El usuario proporciona sus credenciales (correo y contraseña) a través de la aplicación móvil.
- El backend verifica las credenciales con la base de datos.
- Si son correctas, el servidor genera un token JWT firmado, que es enviado al cliente y almacenado localmente en el dispositivo.
- El token JWT se envía con cada solicitud futura a los recursos protegidos.
- El servidor valida el token en cada solicitud y asegura que no haya expirado ni sido manipulado.
Esta medida protege la aplicación contra ataques como el phishing y el robo de contraseñas, además de garantizar una autenticación robusta y eficiente para los usuarios y administradores.
Actualización de Software y Parches
La gestión de vulnerabilidades es crucial. Dado que muchos ataques aprovechan debilidades en software no actualizado, es necesario implementar un plan de actualización constante. Esto incluye tanto los sistemas operativos como las aplicaciones móviles y sus dependencias. Las actualizaciones deben ser instaladas de manera automática o bajo un esquema regular que garantice la protección continua del sistema.
Cifrado de Datos y Copias de Seguridad
Toda la información, tanto en tránsito como en reposo, debe estar cifrada utilizando AES-256. Además, se deben realizar copias de seguridad automáticas de los datos de manera regular, asegurando que estas copias también estén protegidas y almacenadas en entornos seguros. Estas acciones mitigan el riesgo de ataques de ransomware y aseguran que la información no se pierda en caso de un ciberataque.
Detección y Respuesta a Incidentes
Es indispensable contar con un sistema de monitoreo en tiempo real que permita detectar y responder a incidentes de seguridad de manera eficiente. Esto ayuda a identificar ataques de día cero, escalamiento de privilegios y comportamientos sospechosos. El monitoreo continuo y el análisis de registros permiten detectar ataques en curso o incidentes antes de que se conviertan en problemas graves.
Educación en Ciberseguridad
Es importante educar a los usuarios y empleados en ciberseguridad. El entrenamiento periódico sobre cómo identificar y evitar amenazas como el phishing y otros ataques de ingeniería social es clave para fortalecer la seguridad de la organización.
Política de Contraseñas
La política de contraseñas es un componente esencial para la seguridad de nuestra aplicación móvil, ya que protege el acceso no autorizado a la información sensible y mitiga riesgos de ataques comunes, como el phishing y los ataques con contraseñas. Algunas de las políticas establecidas incluyen:
- Longitud mínima: Las contraseñas deben tener al menos 12 caracteres.
- Composición: Deben incluir letras mayúsculas, minúsculas, números y caracteres especiales.
- Autenticación con JWT: Requiere un token JWT válido para acceder a los recursos de la aplicación.
- Evitar Contraseñas Predecibles: Se prohíbe el uso de contraseñas comunes o fáciles de adivinar, como "123456", "password" o variaciones similares. Se recomienda el uso de contraseñas generadas aleatoriamente.
- No deben anotarse las credenciales en documentos ni en cualquier otro tipo de soporte.
- Renovación Periódica: Las contraseñas deben renovarse cada 90 días como máximo. Esta práctica minimiza el riesgo de acceso no autorizado prolongado en caso de compromiso de credenciales.
- Bloqueo de Cuenta: Después de 5 intentos fallidos de inicio de sesión, la cuenta debe bloquearse temporalmente durante 15 minutos. Esto previene ataques de fuerza bruta y ataques de diccionario.
- Cifrado de contraseñas: Todas las contraseñas deben almacenarse de forma cifrada usando algoritmos seguros como bcrypt, con un número de iteraciones que garantice la resistencia ante ataques de fuerza bruta.
Manejo de Contraseñas en Comunicación:
- Encriptación de Datos en Tránsito: Todas las comunicaciones que incluyan contraseñas, como los procesos de inicio de sesión, recuperación de cuentas o cambio de contraseña, deben estar protegidas por un cifrado SSL/TLS.
- No Envío de Contraseñas en Texto Plano: Bajo ninguna circunstancia se enviarán contraseñas por correo electrónico o cualquier otro canal no seguro en formato de texto plano.
4. Autenticación con JWT
El proceso de autenticación con JWT se desarrolla de la siguiente manera:
- Registro e inicio de sesión:
-
- El usuario ingresa sus credenciales en la pantalla de inicio de sesión o registro.
-
- El servidor valida las credenciales y, si son correctas, genera un token JWT firmado que contiene información sobre el usuario.
- Almacenamiento del Token:
-
- El token se envía al cliente y se almacena de forma segura (localStorage o Secure Storage).
- Acceso a recursos protegidos:
-
- El cliente envía el token en cada solicitud al servidor en el encabezado Authorization: Bearer [TOKEN] para acceder a recursos protegidos.
- Validación del Token:
-
- El servidor backend verifica el token JWT, asegurándose de que no haya expirado ni sido manipulado.
- Renovación del Token:
-
- Se implementa un sistema de refresh tokens para permitir la extensión de la validez del token de acceso sin que el usuario deba volver a iniciar sesión, mejorando la experiencia del usuario en la aplicación móvil.
Ventajas de JWT
- Gestión simplificada: JWT permite una gestión eficiente y segura de la autenticación sin la necesidad de mantener sesiones en el servidor.
- Seguridad avanzada: El uso de JWT asegura la autenticación segura y control de acceso basado en roles.
- Facilidad de integración: JWT es compatible con múltiples frameworks y lenguajes de programación, facilitando su integración en aplicaciones móviles como Libroteka.
Elección de JWT
Optamos por JWT para la autenticación de Libroteka porque ofrece una solución eficiente y segura que se adapta perfectamente a las necesidades de la aplicación móvil, permitiendo a los usuarios acceder al catálogo de libros, gestionar reservas y perfiles de manera protegida. JWT es ideal para este proyecto debido a su capacidad para manejar la autenticación de forma descentralizada, eliminando la necesidad de mantener sesiones en el servidor, lo que simplifica la infraestructura y mejora la escalabilidad de la aplicación.
Una de las razones clave para elegir JWT es su flexibilidad en el manejo de la autenticación y autorización basada en roles. Con JWT, podemos incluir en el token información sobre el rol del usuario (ya sea administrador o usuario estándar), lo que permite controlar de manera eficiente qué funciones están disponibles para cada tipo de usuario. Esto es crucial en Libroteka, donde tanto los usuarios regulares como los administradores tienen diferentes niveles de acceso y responsabilidades.
Además, JWT proporciona una autenticación robusta, asegurando que cada solicitud al servidor esté protegida por un token firmado y verificable. La capacidad de JWT para integrar mecanismos como el vencimiento de tokens y la renovación de los mismos mediante refresh tokens asegura que los usuarios mantengan sesiones seguras y que se evite el acceso no autorizado en caso de tokens comprometidos o expirados.
La elección de JWT también se fundamenta en su eficiencia y compatibilidad con la escalabilidad que requiere Libroteka. Al no depender de un almacenamiento de sesión en el servidor, JWT reduce la sobrecarga y permite que la aplicación crezca sin problemas conforme aumente la cantidad de usuarios. Esto es crucial, dado que Libroteka planea expandirse a largo plazo, y JWT puede manejar este crecimiento sin requerir cambios significativos en la infraestructura de autenticación.
Sprint 2 - Sistema de Gestión de Riesgos
Para el sistema de gestión de riesgos de Libroteka, hemos implementado un conjunto robusto de políticas de seguridad diseñadas para prevenir ataques comunes y proteger los datos sensibles de los usuarios, basándonos en las mejores prácticas y estándares internacionales como ISO/IEC 27001. A continuación, se detallan las políticas junto con su frecuencia de revisión y los responsables asignados, asegurando una gestión efectiva de la seguridad de la aplicación.
Control de Acceso y Autenticación (JWT)
Se ha optado por la autenticación utilizando JWT (JSON Web Tokens), tanto para usuarios como para administradores. Esta solución mejora significativamente la seguridad al proporcionar autenticación basada en tokens, lo que permite a los usuarios acceder a recursos protegidos de la aplicación sin necesidad de mantener sesiones en el servidor. Además, los tokens contienen información clave como el ID del usuario y su rol, lo que facilita la autorización basada en roles y garantiza que los accesos estén siempre controlados.
El uso de JWT está diseñado para prevenir ataques como phishing, robo de credenciales y ataques de fuerza bruta, asegurando que los atacantes no puedan acceder sin un token válido. La política se revisará trimestralmente, asegurando que la implementación del sistema siga siendo efectiva. Los responsables son el administrador de seguridad y el equipo de backend, quienes deben garantizar que el sistema de autenticación esté alineado con las mejores prácticas de seguridad.
Actualización de Software y Parches
Se establece que el software de la aplicación, junto con sus dependencias, debe mantenerse actualizado constantemente. Las actualizaciones automáticas, además de un plan regular de parches, protegen a la aplicación de vulnerabilidades conocidas que podrían ser explotadas por ataques como día cero, malware o inyecciones SQL. Mantener el software actualizado es fundamental para evitar que los atacantes se aprovechen de fallos ya documentados. Esta política se revisará de forma mensual para dependencias críticas y semanalmente para actualizaciones urgentes. Los responsables de la implementación de esta política son el equipo de desarrollo y el administrador del sistema, quienes aplicarán los parches de manera oportuna para garantizar la protección continua.
Cifrado de Datos
Esta política asegura que toda la información, tanto en tránsito como en reposo, esté cifrada utilizando AES-256, uno de los estándares más seguros actualmente. Este cifrado previene que los atacantes puedan leer la información, incluso si logran interceptar o acceder a los sistemas de almacenamiento, protegiendo de esta manera ataques como el Man-in-the-Middle (MitM) y ransomware. Además, se realizarán copias de seguridad cifradas de manera regular para proteger los datos almacenados en caso de un fallo o ataque. Esta política se revisará de forma semestral para garantizar que el cifrado se mantenga actualizado, y las copias de seguridad se realizarán semanalmente. El administrador de bases de datos y el equipo de seguridad serán los encargados de gestionar esta política y mantener la integridad de los datos.
Autorización Basada en Roles
Esta política complementa el control de acceso al restringir el uso de recursos sensibles según el rol de cada usuario. Implementar RBAC (Role-Based Access Control) a través de tokens JWT asegura que los usuarios solo accedan a las funcionalidades a las que están autorizados, previniendo escaladas de privilegios o accesos no autorizados a áreas críticas. Por ejemplo, los administradores pueden acceder a funciones críticas como la gestión de usuarios y catálogos, mientras que los usuarios estándar sólo pueden gestionar sus reservas o consultar el catálogo de libros. Esta política se revisa trimestralmente y es gestionada por el equipo de desarrollo y seguridad, quienes aseguran que los permisos se ajusten a las necesidades de los usuarios y a los principios de seguridad definidos por la ISO/IEC 27001.
Detección y Respuesta a Incidentes
Finalmente, esta política garantiza una vigilancia continua del sistema para identificar y bloquear actividades sospechosas en tiempo real. Un sistema de detección de intrusiones monitorea el tráfico de la aplicación, alertando y respondiendo automáticamente ante amenazas como ataques DDoS, intentos de acceso no autorizado o la ejecución de malware. Esta política es crucial para minimizar el impacto de posibles ataques, permitiendo una respuesta rápida antes de que los atacantes comprometan el sistema. Se llevará a cabo una revisión trimestral del sistema IDS/IPS para asegurar su efectividad, siendo el especialista en ciberseguridad el responsable de garantizar que la infraestructura de detección y respuesta esté configurada adecuadamente y funcione correctamente ante cualquier incidente.
Interrelación Ciberseguridad y Proyecto
Teniendo en cuenta los requerimientos de usuario establecidos creemos importante fundar políticas de seguridad que le permitan a los clientes proteger su información y así también garantizar el cumplimiento normativo.
-
Exigir contraseñas fuertes: por un lado consideramos importante que los usuarios establezcan contraseñas fuertes es decir que deberíamos requerir que los usuarios creen contraseñas que cumplan con criterios de complejidad (longitud mínima, combinación de letras mayúsculas, minúsculas, números y caracteres especiales). De esta manera se aumenta la seguridad de las cuentas de usuario y reduce la probabilidad de accesos no autorizados.
-
Validar identidad: por otro lado, nos parece importante que el usuario valide su identidad para poder asegurarnos que solo el usuario legítimo pueda acceder a su cuenta. Para ello será necesario establecer un sistema de verificación por mail o mensaje, donde el usuario al registrarse automáticamente se le envía un mail con un enlace de verificación donde el interesado deberá hacer click para poder ingresar a la cuenta.
Otro de los requerimientos es que el usuario pueda modificar sus datos, para ello necesitaremos podremos aplicar algunas medidas que permitan al usuario mayor seguridad a la hora de realizar esta acción
-
Confirmación de la acción: una vez que el usuario haya editado los campos que desea modificar al aceptar la opción deberá aparecer un cartel que le indique que está por editar los datos y si confirma la acción, este paso previo a aceptar le permitirá al usuario dar su consentimiento explícito.
-
Solicitud de contraseña: una vez que el usuario haya confirmado que desea editar la información de su perfil deberá confirmar su identidad ingresando su contraseña, para asegurar que es realmente el usuario legítimo el que desea realizar ese cambio. Por lo tanto una vez que el usuario ingresa la contraseña, la misma es verificada y si es correcta se actualizarán los datos automáticamente. En el caso que la contraseña se verifica y no coincide con el usuario se presenta un mensaje de error y no se actualizan los datos.
Otro requerimiento funcional es eliminar usuarios, algunas de las medidas de seguridad para esta acción serán similares que en el caso de editar los datos.
-
Confirmación de la acción: una vez que el usuario haya hecho click en eliminar cuenta deberá aparecer un mensaje de advertencia que le indique que está por eliminar la cuenta y donde le informe alguna consecuencias de esta acción como por ejemplo de la eliminación de los datos y si confirma la acción a través de un botón de “confirmar” se procederá a una nueva instancia de seguridad.
-
Solicitud de contraseña: una vez que el usuario haya confirmado que desea eliminar su perfil deberá confirmar su identidad ingresando su contraseña, para asegurar que es realmente el usuario legítimo el que desea eliminar la cuenta. Por lo tanto una vez que el usuario ingresa la contraseña se produce la eliminación de la cuenta automáticamente. En el caso que la contraseña se verifica y no coincide con el usuario se presenta un mensaje de error y no se actualizan los datos.
Control de Acceso y Autenticación (JWT)
Elección
Se eligió la autenticación basada en JWT debido a su capacidad para descentralizar la gestión de sesiones, mejorar la seguridad y facilitar la integración con la API de Libroteka. Los JWT permiten la autenticación y autorización sin necesidad de almacenar estados de usuario en el servidor, lo que reduce la complejidad y aumenta la escalabilidad del sistema.
Fundamentación
El uso de JWT está alineado con las mejores prácticas de seguridad recomendadas por estándares como ISO/IEC 27001, que subrayan la importancia de controlar el acceso a la información sensible. JWT ofrece una autenticación segura basada en tokens, evitando la necesidad de sesiones en el servidor y proporcionando un acceso rápido y controlado. Además, la información sobre el rol del usuario incluida en el token permite aplicar RBAC de manera eficiente, asegurando que los usuarios accedan sólo a los recursos que les corresponden.
Desarrollo
El flujo de autenticación con JWT se desarrolla siguiendo los siguientes pasos:
- El usuario proporciona sus credenciales (nombre de usuario y contraseña) en la aplicación.
- El servidor verifica las credenciales y, si son correctas, genera un token JWT firmado con una clave secreta.
- El JWT contiene información clave, como el ID del usuario y su rol.
- El JWT es enviado al cliente (aplicación móvil) y almacenado de manera segura.
- Con cada solicitud, el JWT es enviado en el encabezado Authorization en el formato: Authorization: Bearer [TOKEN].
- El servidor valida el token en cada solicitud, verificando su autenticidad y si ha expirado.
Autorización Según Perfiles y Permisos de Usuarios
Elección
Se optó por una autorización basada en roles (RBAC) utilizando tokens JWT, que permiten controlar los accesos a las funcionalidades de la aplicación según el perfil del usuario. Los roles definidos incluyen usuarios estándar y administradores.
Fundamentación
En una aplicación como Libroteka, es esencial que los usuarios no tengan los mismos privilegios. Los administradores necesitan acceso a funciones críticas como la gestión de catálogos y usuarios, mientras que los usuarios estándar solo deben acceder a funcionalidades como la consulta de libros y la gestión de sus reservas. RBAC con JWT facilita una implementación eficiente y segura de controles de acceso basados en roles.
Desarrollo
Al autenticarse un usuario, el servidor genera un JWT que incluye información sobre su rol. Este token es enviado con cada petición que hace el usuario al servidor, donde se valida para determinar si el usuario tiene los permisos necesarios para acceder al recurso solicitado.
Desafíos Enfrentados y Soluciones Implementadas
Gestión de Vencimiento de Tokens:
-
Desafío : Los tokens tienen una vida útil limitada, lo que puede llevar a una experiencia interrumpida si el usuario debe autenticarse repetidamente.
-
Solución : Se implementó un sistema de rotación de tokens de actualización con el ajuste ROTATE_REFRESH_TOKENS, permitiendo renovar el token de acceso de forma segura cuando el token de acceso expire. Además, BLACKLIST_AFTER_ROTATION asegura que los tokens antiguos se invalidan una vez rotados, previniendo así el uso indebido de tokens vencidos.
Manejo Seguro del Token en Android (Retrofit):
-
Desafío : En una aplicación móvil, el almacenamiento seguro y el manejo de tokens de acceso y actualización en Retrofit presentan dificultades para mantener el flujo de autenticación continuo y seguro.
-
Solución : Se configuraron clases para administrar y almacenar los tokens de manera centralizada, utilizando estrategias de verificación y manejo de tokens caducados mediante el interceptor de tokens de Retrofit. Además, se implementaron mejoras en la lógica para que los tokens se gestionen automáticamente en el segundo plano.
Manejo de Errores en el Proceso de Autenticación:
-
Desafío : Durante el desarrollo, surgieron varios problemas relacionados con el manejo de errores, tanto en la validación de credenciales como en la expiración y renovación de tokens.
-
Solución : Se añadieron mensajes detallados en los callbacks de ApiManageren el cliente Android para informar al usuario en caso de fallos en el inicio de sesión, token caducado, y problemas en la conexión. Esto mejora la experiencia y guía a los usuarios si se presentan problemas.
Integración con el modelo de usuario personalizado:
-
Desafío: Inicialmente, al intentar implementar SimpleJWT en el backend, la API/token seguía devolviendo el token del modelo de usuario predeterminado de Django, lo que impedía la autenticación mediante el modelo de usuario personalizado que se configuró para Libroteka. Además, la autenticacion personalizada era a través del campo email, pero **JWT ** exigía el username o el ID para devolver el token. Intentamos distintas configuraciones, pero el backend seguía buscando el usuario predeterminado de Django.
-
Solución: Modificamos nuestro modelo personalizado para que heredara de AbstractUser para que maneje ambos usuarios en lugar de tener dos modelos de usuarios separados, al registrarse un usuario en la aplicacion Libroteca o creandolo desde la api los campos para el staff estan por defecto en False, permitiendo al sistema reconocer correctamente los usuarios y conservando el campo email, sin modificar demasiado la estructura de la aplicación.
Seguridad en el almacenamiento de tokens:
-
Desafío: La API inicialmente devolvía los tokens directamente en las respuestas, lo que podría haber permitido el acceso no seguro a través de JavaScript en el cliente.
-
Solución: Decidimos enviar los tokens como cookies seguras, asegurando que solo fueran accesibles en el backend y manteniendo así los tokens fuera del alcance de JavaScript.
Dificultades para pruebas locales en Android:
-
Desafío: Android solo aceptaba conexiones HTTPS, lo que dificultaba probar la aplicación con el backend en desarrollo, dado que nuestro entorno local no utilizaba HTTPS.
-
Solución: Configuramos ngrok para exponer el backend local a una URL HTTPS pública, permitiendo probar el flujo completo en la aplicación móvil.
Adaptación de infraestructura de Android para JWT y manejo de datos del usuario:
-
Desafío: La integración de JWT en la aplicación Android fue compleja, ya que requería modificaciones en las clases Java, ajustes en la base de datos y en las APIs. Al principio, logramos autenticar y recibir el token, pero la información de usuario se pierde después de iniciar sesión, lo que impide el acceso al sistema.
-
Solución: Implementamos una estructura más robusta para almacenar y gestionar la información del usuario en Android, de modo que los datos se persistieran correctamente tras recibir el token.
Problema al subir los cambios:
-
Desafío: Subir los cambios ya funcionando de simple JWT
-
Problema actual: Logramos hacer que espere que llegue el token antes de llamar a la api login, estaba funcionando perfectamente, subimos los cambios y generamos la PR, antes de asignar la PR quisimos actualizar los cambios con Develop, pero al hacerlo nos piso muchos cambios que no generaban conflicto alguno, no entendiamos porque, quisimos hacer git reset --hard HEAD~4 porque habian 4 commits antes del que queriamos (donde estaban los cambios que funcionaban) y nos borro mucha implementacion.
-
Solución: Vamos a agregar lo que falta y volver a probar, otra cosa que vamos a hacer diferente es subir los cambios de backend que si andan a develop, y levantar la implementacion de android desde ahi, para tratar de evitar que nos pise información.
Ejemplo:
- Un usuario con rol de administrador podrá acceder a la API para gestionar libros.
- Un usuario con rol estándar sólo podrá acceder a la API para visualizar libros.
Casos de Prueba Basados en Políticas de Seguridad
- Autenticación con JWT
-
- Título: Verificar que el sistema genera un token JWT al iniciar sesión.
-
- Descripción: El sistema debe generar un JWT válido al proporcionar credenciales correctas.
-
- Precondiciones: El usuario tiene credenciales válidas.
-
- Pasos:
-
-
- Ingresar el nombre de usuario y contraseña.
-
-
-
- Verificar que el token JWT se genere correctamente.
-
-
- Resultado esperado: El sistema genera un token JWT y lo devuelve al cliente.
-
- Frecuencia: Trimestral.
-
- Responsable: Augusto Dizanzo.
- Validación de Token JWT
-
- Título: Verificar que el acceso no se permite con un token JWT inválido.
-
- Descripción: El sistema debe rechazar cualquier token JWT inválido o expirado.
-
- Precondiciones: Un token JWT ha expirado o ha sido manipulado.
-
- Pasos:
-
-
- Intentar acceder a un recurso con un token inválido.
-
-
-
- Verificar que el sistema deniegue el acceso.
-
-
- Resultado esperado: El sistema rechaza el token JWT inválido.
-
- Frecuencia: Trimestral.
-
- Responsable: Romina Haag.
- Revocación de Token JWT
-
- Título: Verificar que un token JWT revocado no permita el acceso.
-
- Descripción: Asegurarse de que, tras la revocación de un token JWT, el usuario no pueda acceder al sistema.
-
- Precondiciones: Un token ha sido revocado.
-
- Pasos:
-
-
- Intentar acceder a un recurso con el token revocado.
-
-
- Resultado esperado: El sistema debe denegar el acceso.
-
- Frecuencia: Trimestral.
-
- Responsable: Facundo Salvatierra.
- Control de Acceso por Rol (Usuarios Estándar)
-
- Título: Verificar que los usuarios estándar no puedan acceder a funcionalidades de administrador.
-
- Descripción: Asegurar que los usuarios con rol estándar no tengan acceso a funciones reservadas para administradores.
-
- Precondiciones: El usuario tiene rol estándar.
-
- Pasos:
-
-
- Intentar acceder a la sección de administración.
-
-
- Resultado esperado: El acceso es denegado para usuarios estándar.
-
- Frecuencia: Trimestral.
-
- Responsable: Daiana Zabala.
- Control de Acceso por Rol (Administradores)
-
- Título: Verificar que los administradores tengan acceso a las funcionalidades de gestión.
-
- Descripción: Asegurar que los usuarios con rol de administrador puedan acceder a funciones de gestión, como la administración de usuarios y catálogos.
-
- Precondiciones: El usuario tiene rol de administrador.
-
- Pasos:
-
-
- Iniciar sesión como administrador.
-
-
-
- Acceder a las funciones de gestión.
-
-
- Resultado esperado: El sistema permite el acceso a las funciones de administración.
-
- Frecuencia: Trimestral.
-
- Responsable: Juan Pablo Suarez.
- Expiración del Token JWT
-
- Título: Verificar que el sistema invalida el token JWT después de su expiración.
-
- Descripción: Comprobar que el usuario no pueda acceder a la aplicación con un token JWT expirado.
-
- Precondiciones: El token JWT tiene un tiempo de expiración definido.
-
- Pasos:
-
-
- Iniciar sesión para generar un token JWT.
-
-
-
- Esperar a que el token expire.
-
-
-
- Intentar acceder a la aplicación con el token expirado.
-
-
- Resultado esperado: El sistema deniega el acceso debido al token expirado.
-
- Frecuencia: Trimestral.
-
- Responsable: Giuliana Gesto.
- Refresco de Token JWT
-
- Título: Verificar que el sistema permite generar un nuevo token JWT antes de que el actual expire.
-
- Descripción: Asegurarse de que el sistema ofrece un mecanismo para refrescar el token JWT cuando esté por expirar.
-
- Precondiciones: El token JWT está cerca de expirar.
-
- Pasos:
-
-
- Iniciar sesión para generar un token JWT.
-
-
-
- Verificar que, antes de que el token expire, el sistema ofrezca la posibilidad de generar uno nuevo.
-
-
- Resultado esperado: El sistema genera un nuevo token JWT antes de la expiración.
-
- Frecuencia: Trimestral.
-
- Responsable: Germán Cano.
- Pruebas de Escalada de Privilegios
-
- Título: Verificar que no haya escalada de privilegios.
-
- Descripción: Asegurar que un usuario estándar no puede obtener acceso a funciones de administrador a través de métodos maliciosos.
-
- Precondiciones: Un usuario estándar está logueado.
-
- Pasos:
-
-
- Intentar acceder a funciones de administrador utilizando técnicas maliciosas.
-
-
- Resultado esperado: El acceso debe ser denegado y registrado en el sistema de auditoría.
-
- Frecuencia: Trimestral.
-
- Responsable: Valentina Tommasini.
Sprint 2 - Sistema de Gestión de Riesgos