【问题标题】:Writing Firebase Database without using their auto generated key in Android在 Android 中不使用其自动生成的密钥来编写 Firebase 数据库
【发布时间】:2017-08-26 18:01:47
【问题描述】:

我在我的 android 项目中使用 Firebase,每个用户都将存储他的详细信息,例如姓名、电话号码、video_url、thumbnail_url 等。现在我以前在以前的项目中使用它的方式如图所示-

我没有使用 Firebase 的自动生成的 id/Hash,而是使用了电子邮件 ID。那样对我来说更容易。但是有人告诉我,使用电子邮件而不是自动生成的哈希/ID 是不安全的,推荐的方法是使用哈希。那么问题来了,为了方便而不使用哈希值而使用电子邮件 ID 真的不安全吗?

另外,如果它是不安全的,如果我们不将所有键值作为对象同时插入,那么在同一个哈希下写入不同键值对的推荐方法是什么?

【问题讨论】:

  • Firebase 推送 ID 并不是一种安全机制,因为它们没有包含足够的熵,无法猜测。在电子邮件地址下存储数据并不少见。这两种方法都可以是安全的,也可以是不安全的,这取决于许多因素或您的应用程序的需求。如果有人告诉您您的数据结构不安全,我建议您询问他们它有什么不安全的地方。
  • 谢谢,我想这可以解决问题。那么使用 Firebase 自动生成的 id 有什么好处呢?
  • 参见 firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html 和 firebase.googleblog.com/2014/04/…
  • 感谢您的帮助。我相信我可以简单地使用电子邮件@FrankvanPuffelen
  • 请不要将电子邮件用作键 - 最好将键(应该是静态的)与它们包含的可变子数据分离。密钥无法更改,例如,如果用户更新了他们的电子邮件地址,您将不得不删除他们的主节点并重新编写它,然后还要删除 Firebase 中对该节点的所有其他引用。将其保留为子节点意味着只需要更新一个节点;这是使用自动生成的密钥的优势之一。

标签: android firebase firebase-realtime-database firebase-security


【解决方案1】:

Firebase 的推送 ID 更常用于您在更传统的数据库中使用序列号的情况。 Firebase 推送 ID 并不意味着作为一种安全机制,因为它们不包含足够的熵而无法猜测。有关它们的更多信息,请参阅blog postthis one

在电子邮件地址下存储数据也很常见。

这两种方法都可以是安全的,也可以是不安全的,这取决于许多因素或您应用的需求。如果有人告诉您您的数据结构不安全,我建议您询问他们它有什么不安全的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 2017-08-22
    • 2016-04-09
    • 1970-01-01
    相关资源
    最近更新 更多