【问题标题】:Android, key -> value structure stored safely, not modifiableAndroid,键->值结构安全存储,不可修改
【发布时间】:2016-01-14 03:53:42
【问题描述】:

我想存储一个键值结构的数据,例如

2354235 => string1
3453453 => string2

结构必须在构建时定义,并且在运行时不可修改(出于安全原因)。它必须安全存储(只能由应用程序读取)。将其存储在源代码和 sqlite db 中是不可接受的。还有其他想法吗?

【问题讨论】:

  • 如果您不打算将其存储在应用程序或数据库中,那么您将存储在哪里?
  • 没有任何“安全”的地方可以在设备上存储数据。存储在设备上的任何内容都不应该被认为是安全的,因为您总能以某种方式得到它。创建一个 JSON 输出字符串并对其进行编码,然后将其写入文件。这有点安全,但不是真的
  • 您正在开发什么样的应用程序?使用加密的 SharedPreferences?

标签: android collections storage hashtable


【解决方案1】:

你在问两件事:

1) 在构建时,在代码或数据库之外,您可以将其存储在哪里。 2) 你怎样才能让它只能被应用程序读取。

对于 1),我建议您只使用加密的 raw 文件(将其放在 /res/raw 中)。它们无法修改,可能只是 CSV 或 JSON。检查javax.crypto 包以获取必要的加密类。

对于 2),这取决于您希望它有多安全。您可以使用安全连接从服务器下载解密密钥,但是您需要确保连接到服务器的确实是您的应用程序。您可以使用类似于here 中描述的内容在服务器中验证您的应用:

总结

这样做是一个多步骤的过程,我将对其进行完整概述,但这里有一个简短的版本:您使用可通过 Google Play 服务获得的 GoogleAuthUtil 类来检索称为“ID 令牌”的字符串。您将令牌发送到后端,您的后端可以使用它来快速、廉价地验证哪个应用发送了它以及谁在使用该应用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 2012-05-05
    • 2020-09-27
    • 2018-07-11
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多