在一个使用包含auth的firebase的网站上,我实现了一个“忘记密码”的功能。
如果用户提供的电子邮件没有关联的帐户,则sendPasswordResetEmail()
的返回状态为400;如果电子邮件有帐户,则返回200。
这意味着攻击者可以一直猜测电子邮件,直到他们得到一个200。然后他们知道一个有效的电子邮件。然后他们可以开始猜测密码。
有没有办法让sendPasswordResetEmail()
总是返回200?我希望唯一的React,无论是一个好的或坏的电子邮件输入,是“检查您的电子邮件为重置链接”。如果电子邮件是无效的,那么firebase应该悄悄地不发送电子邮件。
或者是否有其他机制可以提高安全性?
1条答案
按热度按时间fcg9iug31#
从客户端SDK到Firebase Authentication的API调用是有速率限制的,以降低字典攻击的风险。我们还刚刚推出了新的配置选项,允许您执行enable email enumeration protection,例如无论错误类型如何,始终返回
INVALID_LOGIN_CREDENTIALS
。如果你怀疑你的项目正在积极地发现这样的攻击,reach out to Firebase support,以便他们可以调查和调整配额,如果需要的话。