根据firebase文档,客户端SDK似乎允许直接更新电子邮件地址和用户个人资料信息。
https://firebase.google.com/docs/auth/android/manage-users#update_a_users_profile
如果我构建一个没有任何UI工作流供用户更改电子邮件地址的android应用,我相信大多数(99.99%+的普通用户)将按预期使用该应用。
但是,如果某些用户对应用程序进行了调查/反向工程,得知该应用程序使用了Firebase,那么他们是否有可能调试并调用提供的任何Firebase Auth客户端SDK方法? (例如,黑客是否可以更改电子邮件地址[在初次注册后不应该在我的应用程序中允许使用]并更改照片网址以指向不适当的图像?
对于Firestore数据库,我可以使用安全规则来防止读/写,但是我不确定如何在Firebase身份验证中做类似的事情。
答案 0 :(得分:1)
是的,用户有可能持有令牌,该令牌将用于调用Firebase身份验证公开的后端API,而该API通常由SDK使用。没有等效的数据库安全规则。
此事的事实是,用户通常应该能够更改其电子邮件地址,因为他们有时可能确实需要更改电子邮件提供商。如果您的应用由于某种原因而不允许这样做,并且您硬性要求仅使用所允许的身份验证提供程序提供的电子邮件地址,则应考虑在用户帐户使用时将该值写入数据库被建造。然后,使用安全规则阻止用户在此处进行更改。从那时起,您将永远只信任最初写入数据库的值,而永远不会使用来自身份验证提供程序的电子邮件地址。
您可能希望处理从Cloud Functions auth onCreate trigger向数据库的写操作,以便控制所有逻辑。