跳到内容
CrossFly 是 100% 开源在 GitHub 关注我们
CrossFlyCrossFly
开始使用

本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。

安全

在设备上保护数据的两大实用支柱:加密数据库和把生物识别作为访问入口。

加密数据库(SQLite3MC)

用一把密钥打开 SQLite——默认采用 ChaCha20-Poly1305 加密(或 SQLCIPHER):

byte[] chave = derivarChaveDaSenha(senhaUsuario);   // ⚠️ 用 KDF 从密码派生 — 切勿硬编码
try (SqliteDb db = SqliteDb.open("cofre.db", chave)) {
   // … 透明加密的数据 …
   db.rekey(novaChave);                              // 更换密钥(例如用户改密码时)
}
  • 无密钥时零成本,有密钥时透明加密——无密钥就是普通 SQLite;有密钥时,一切都在访问时加密/解密,无需改动你的 SQL。
  • 绝不要硬编码密钥。 用 KDF 从用户密码派生;只把必要的材料保存在平台的密钥库中。
  • 在移除加密(用 rekey 解除保护)时要小心——文件会变为明文可读。

把生物识别作为访问入口

在进入敏感区域(财务、个人数据)之前,要求生物识别:

if (Biometry.isAvailable()) {
   Biometry.authenticate("Acessar cofre", "Cancelar", false,
      (res, msg) -> Component.onUI(() -> {
         if (res == Biometry.AuthResult.SUCCESS) abrirCofre();
         else loginPorSenha();                 // 始终有 fallback
      }));
} else {
   loginPorSenha();
}
  • 生物识别数据永不离开设备——应用只收到 SUCCESS/FAILURE/等结果。
  • 生物识别是本地认证:它补充而非取代应用层的认证(服务器登录)。

其他注意事项

  • 剪贴板: 不要把秘密信息复制到剪贴板(Device.clipboardCopy)——它对其他应用是可访问的。
  • 文件/homeFolder: Device.homeFolder 中的数据默认不加密——对敏感内容请使用加密数据库。
  • 日志: 不要用 Debug.log 记录密码/令牌。

最佳实践

  • 敏感数据 → 加密 SQLite;密钥从密码派生(KDF),绝不写在代码里。
  • 生物识别作为本地入口 + 始终提供应用层的兜底方案。
  • 不要把秘密放进剪贴板、明文文件或日志。

常见错误

  • 在代码中硬编码密钥(任何人都能从二进制中提取)。
  • 把生物识别当作可以取代服务器登录。
  • 把令牌/密码保存在 homeFolder 中未加密的文件里。

另请参阅

这个页面有帮助吗?