如何在Firebase身份验证电子邮件提供商注册中禁止一次性电子邮件?

时间:2018-12-07 12:40:00

标签: firebase oauth-2.0 firebase-authentication firebaseui

我们正在使用firebase auth和firebase auth UI来验证用户身份。

我们要禁止或阻止那些试图使用临时邮箱进行注册的用户(例如:https://www.mailinator.com)。

有2种建议的解决方案:

  1. 是否对电子邮件ID进行客户端验证? (很难在客户端中管理电子邮件提供商的黑名单。而且,人们仍然可以使用API​​对其进行黑客入侵。)
  2. 用户注册后,在onCreate用户事件上,我们可以触发一个firebase函数来针对黑名单验证电子邮件ID,然后可以禁用或撤消该帐户。但是在这里

    • 如果我们要禁用用户,则在客户已获得ID令牌后,他/她将在接下来的1个小时内访问我们的应用。
    • 如果要吊销刷新令牌,则必须再次等待1个小时或编写规则以向Firestore进行查询,以检查用户访问权限是否被吊销。 (最好能避免这种查询)

是否有更好的或本机的方法来解决此问题?

如果没有其他解决方案,我们将选择使用第二选项(撤销刷新令牌)。

2 个答案:

答案 0 :(得分:2)

我会结合您提出的两种解决方案。进行客户端检查会使大多数人失望,并且对于尝试解决该问题的更多技术娴熟者,您的onCreate触发器将对其进行处理。

您还可以通过onCreate触发器将其uid添加到实时数据库的阻止列表中。

然后,您可以在客户端上收听并注销。对于数据库规则,您可以检查它们是否在阻止列表中,从而阻止读/写规则。

答案 1 :(得分:0)

用于检查DPA的定期更新服务已经维护。

执行简单的获取请求即可: https://open.kickbox.com/v1/disposable/ {user_email}

这将返回响应 { “一次性”:正确 } 如果电子邮件ID是一次性的。

您可以发送带有完整电子邮件ID或仅域的获取请求。

例如https://open.kickbox.com/v1/disposable/ jamond67@zdecaesgl.com https://open.kickbox.com/v1/disposable/ zdecaesgl.com