【问题标题】:Is it good idea to store sensitive info in firebase?在firebase中存储敏感信息是个好主意吗?
【发布时间】:2018-11-20 19:31:06
【问题描述】:

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

为此,我想使用 Firebase 数据库,但读完后我有些怀疑

Firebase 实时数据库

使用我们的 NoSQL 云数据库存储和同步数据。数据在所有客户端之间实时同步,并且在您的应用离线时仍然可用。

这是否意味着 firebase 会将包含所有可用密钥的表复制给所有应用程序用户,并且某些聪明的用户可以在他的手机上从该副本中读取列表?

【问题讨论】:

  • 我想补充一点,我不认为存储敏感信息是一个很好的实时用例;而是使用 Firestore。

标签: firebase firebase-realtime-database


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    个人的答案是不会。你可以考虑Google Play Subscriptions and In-App Purchases。

    如果你真的需要的话:

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

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

    只需加密所有内容。

    最好有一个禁止列表而不是一个批准的密钥列表。最终你必须创建更多的密钥,而维护一个被禁止的密钥列表会更容易。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 如果您需要存储个人详细信息。存储所有这些而不是原始详细信息的组合哈希。
      • @Liam 然后用户必须重新输入所有信息才能验证(如果您需要一组特定信息来重置您的帐户,这将是有意义的)。
      猜你喜欢
      • 2012-12-26
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      相关资源
      最近更新 更多