Skip to main content

16. Seguridad del Software (Aplicación)

Este apartado complementa la seguridad del código, enfocándose en los mecanismos de autenticación, autorización y protección del aplicativo final Android en ejecución.


16.1 Objetivos

  • Asegurar que solo usuarios válidos accedan a la app
  • Proteger las sesiones, datos y recursos del usuario
  • Integrar mecanismos de autenticación modernos
  • Validar la integridad y procedencia de la app

16.2 Autenticación

  • Usar OAuth 2.0 con tokens access y refresh
  • Protocolo de intercambio vía HTTPS
  • Uso de librerías seguras y estándar (ej: Firebase Auth, Auth0)
Authorization: Bearer {access_token}
  • Validez corta para tokens (15-30 min)
  • Renovación automática con refreshToken
  • Almacenar en EncryptedSharedPreferences

16.3 Inicio de sesión seguro

  • Validación de credenciales en backend (no localmente)
  • Activar autenticación biométrica:
val biometricPrompt = BiometricPrompt(...)
  • Usar Jetpack Biometric para FaceID / Fingerprint
  • Mostrar errores genéricos, no revelar si fue usuario o contraseña

16.4 Gestión de sesión

  • Cierre automático por inactividad
  • Revocación remota de sesión si se detecta riesgo
  • Validación de token en cada llamada backend
  • Restricción a un solo dispositivo por usuario (opcional)

16.5 Protección en tiempo de ejecución

MecanismoDescripción
Play Integrity APIVerifica si la app fue modificada o clonada
SafetyNet (legacy)Validación de device y entorno
SSL Pinning (opcional)Reforzar conexión HTTPS a un certificado específico
Root DetectionPrevenir ejecución en dispositivos comprometidos

16.6 Control de acceso

  • Usar roles y permisos desde backend (user.role == "admin")
  • Validar en cada pantalla que el usuario tenga acceso autorizado
  • Mostrar o esconder funcionalidades según perfil

16.7 Seguridad de endpoints

  • Todos los endpoints deben ser HTTPS
  • Validar tokens y permisos en backend
  • Auditar llamadas por IP, user-agent y comportamiento

16.8 Registro seguro de eventos

  • Registrar logins, fallos, cierres de sesión, cambios críticos
  • No incluir datos sensibles en logs
  • Enviar eventos a Firebase Analytics o backend centralizado

16.9 Recomendaciones

✅ Usar Jetpack Security, Biometric, Play Integrity
✅ Evitar hardcode de tokens, urls, claves
✅ Validar la app en dispositivos reales y con VPN / proxy
✅ Asegurar backend con autenticación fuerte y auditoría
✅ Revisar mensualmente librerías y CVEs activos


La seguridad del aplicativo final es el último bastión antes del usuario. Una app segura protege tanto la información como la reputación de la empresa, y debe ser validada como parte integral del proceso de desarrollo.