【问题标题】:How can I prevent Firebase auth users from changing their email address by themselves?如何防止 Firebase 身份验证用户自行更改其电子邮件地址?
【发布时间】:2020-01-15 13:07:23
【问题描述】:

根据 firebase doc,客户端 SDK 似乎允许直接更新电子邮件地址以及用户个人资料信息。

https://firebase.google.com/docs/auth/android/manage-users#update_a_users_profile

如果我构建一个没有任何 UI 工作流供用户更改电子邮件地址的 Android 应用程序,我相信大多数(99.99% 以上的普通用户)会按预期使用该应用程序。

但是,如果某些用户对应用进行调查/反向工程,得知应用使用了 Firebase,他们是否无法调试和调用提供的任何一种 Firebase Auth 客户端 SDK 方法? (例如,黑客是否可以更改电子邮件地址 [在初始注册后不允许在我的应用中使用] 并更改照片 url 以指向不适当的图像?

使用 Firestore 数据库,我可以使用安全规则来防止读取/写入,但我不确定如何在 Firebase 身份验证中执行类似的操作。

【问题讨论】:

    标签: firebase firebase-authentication


    【解决方案1】:

    是的,用户可以获得令牌,该令牌将用于调用通常由 SDK 使用的 Firebase 身份验证公开的后端 API。没有等效的数据库安全规则。

    事实上,用户通常应该能够更改他们的电子邮件地址,因为他们实际上可能需要在某些时候更改电子邮件提供商。如果您的应用由于某种原因不允许这样做,并且您有硬性要求只能使用您允许的身份验证提供商提供的电子邮件地址,您应该考虑在用户帐户时将该值写入数据库被建造。然后,使用安全规则来防止用户在那里更改它。从那时起,您将只信任最初写入数据库的值,而永远不会使用来自身份验证提供商的电子邮件地址。

    您可能希望处理从Cloud Functions auth onCreate trigger 写入数据库的操作,以便控制所有逻辑。

    【讨论】:

    • 感谢您提供详细信息。我的意思是说,我对用户通过批准的工作流程更改他们的电子邮件地址感到满意,因为人们经常更改他们的主要地址。但是,在我的应用服务器不知情的情况下,阻止恶意用户更改电子邮件(或用户名/照片)似乎是不可能的。
    • 如果我必须维护一个单独的数据库来保存事实来源,那么我将无法利用 Firebase Auth 的大部分功能,例如电子邮件操作、密码管理、配置文件、等等。我想我会评估内部身份验证管理开发与少数用户污染其个人资料数据的风险之间的成本,然后决定做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多