Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.

Seguridad

Dos pilares prácticos para proteger datos en el dispositivo: base de datos cifrada y biometría como puerta de acceso.

Base de datos cifrada (SQLite3MC)

Abre SQLite con una clave — cifra ChaCha20-Poly1305 por defecto (o SQLCIPHER):

byte[] chave = derivarChaveDaSenha(senhaUsuario);   // ⚠️ deriva de la contraseña con KDF — NUNCA hardcode
try (SqliteDb db = SqliteDb.open("cofre.db", chave)) {
   // … datos cifrados de forma transparente …
   db.rekey(novaChave);                              // cambia la clave (ej.: cuando el usuario cambia la contraseña)
}
  • Costo-cero sin clave, cifra transparente con clave — sin clave es SQLite normal; con clave, todo se cifra/descifra en el acceso, sin cambiar tu SQL.
  • Nunca hardcodees la clave. Derívala de una contraseña del usuario con un KDF; guarda solo el material necesario en el keystore de la plataforma.
  • Cuidado al quitar la cifra (rekey para desproteger) — el archivo pasa a ser legible en claro.

Biometría como puerta de acceso

Antes de un área sensible (financiera, datos personales), exige biometría:

if (Biometry.isAvailable()) {
   Biometry.authenticate("Acessar cofre", "Cancelar", false,
      (res, msg) -> Component.onUI(() -> {
         if (res == Biometry.AuthResult.SUCCESS) abrirCofre();
         else loginPorSenha();                 // fallback siempre
      }));
} else {
   loginPorSenha();
}
  • Los datos biométricos nunca salen del dispositivo — la app solo recibe SUCCESS/FAILURE/etc.
  • La biometría es autenticación local: complementa, no sustituye, la autenticación de la aplicación (login en el servidor).

Otros cuidados

  • Clipboard: no copies secretos al portapapeles (Device.clipboardCopy) — queda accesible a otras apps.
  • Archivos/homeFolder: los datos en Device.homeFolder no están cifrados por defecto — usa la base cifrada para lo sensible.
  • Logs: no registres contraseñas/tokens con Debug.log.

Buenas prácticas

  • Datos sensibles → SQLite cifrado; clave derivada de contraseña (KDF), nunca en el código.
  • Biometría como gate local + siempre un fallback de aplicación.
  • Nada de secretos en clipboard, archivo en claro o log.

Errores comunes

  • Clave hardcodeada en el código (cualquiera la extrae del binario).
  • Tratar la biometría como si sustituyera el login del servidor.
  • Guardar token/contraseña en archivo no cifrado en el homeFolder.

Ver también

¿Te resultó útil esta página?