将敏感信息存储在firebase中是个好主意吗?

时间:2018-06-11 14:02:43

标签: firebase firebase-realtime-database

在我的Android应用程序中,我有一个想法,即在数据库中存储一些串行密钥。如果用户输入正确的密钥,他将获得完整版的应用程序,并且在服务器上禁用该密钥以避免多次使用相同的密钥,否则他可以在没有密钥的情况下在Google Play中购买应用程序。

为此,我想使用Firebase数据库,但在阅读之后我有些疑惑

  

Firebase实时数据库

     

使用我们的NoSQL云数据库存储和同步数据。数据会在所有客户端实时同步,并在您的应用离线时保持可用状态。

这是否意味着firebase会将所有可用密钥复制到所有应用程序用户的表中,而某些智能用户可以通过手机从该副本中读取列表?

3 个答案:

答案 0 :(得分:4)

并非所有数据都会自动复制到所有客户端。该客户端仅接收客户端订阅的数据。

您可以通过Firebase's server-side security rules控制每个客户可以看到哪些数据。例如,您通常希望ensure that each user can only read their own data

答案 1 :(得分:2)

存储超级敏感数据(如社会安全号码或信用卡号码)可能不是一个好主意,但如果您看到https://firebase.google.com/docs/database/security/可以看到,您可以控制对数据的访问权限,&使用验证,特别是因为如果密钥被泄露,你可以重新生成密钥,这不是最糟糕的选择。如果您查看https://firebase.google.com/docs/database/security/user-security,您可以看到,可以使用基于智能手机的客户端编写使用谷歌驱动器的应用程序。

答案 2 :(得分:0)

就个人而言,答案是否定的。您可能想要考虑Google Play Subscriptions and In-App Purchases

如果你真的需要:

  • 在用户购买升级(服务器端)时创建密钥。
  • 使用密钥存储设备ID /帐户ID(哈希)和时间戳。

信用卡详细信息和到期日应合并为一个哈希值。

只加密所有内容

禁止列表比批准密钥列表更好。最终你必须创建更多的密钥,并且更容易维护一个禁用密钥列表。