【发布时间】: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