【发布时间】:2021-05-29 23:14:51
【问题描述】:
通常认为泄露一个 电子邮件是否已在您的网站上注册。但是,我正在努力寻找一种方法来阻止 Firebase 调用泄露这些信息。在这个question 中,部分问题得到了解决——Firebase 将响应 400 状态并在电子邮件未注册的情况下泄漏错误。给出的解决方案是在拨打重置电话之前测试电子邮件是否已注册。这仍然会泄露很容易找到的信息 - 如果您查看网络日志。下面是一个例子:
帐户存在: Account Exists Picture
帐户不存在 Account Does Not Exist
如您所见,如果电子邮件确实存在,则会进行额外调用。
下面是一个显示实现细节的 sn-p:
//need to handle attempting to reset password
try {
const signInOptions = await firebase.auth().fetchSignInMethodsForEmail(data.email);
if(signInOptions.length > 0)
await firebase.auth().sendPasswordResetEmail(data.email);
setStatementMessage('Email sent');
} catch(e) {
if(e === 'auth/user-not-found') {
setStatementMessage('Email sent');
}
console.log(e);
}
如何使用 Firebase Auth 重置用户密码而不泄露是否存在帐户?
【问题讨论】:
-
如果有人可以看到网络日志,那么他们将能够看到用户所做的一切,包括他们用来登录的密码,所以没有办法设计这样的信息不' t 存在于网络日志中。但是,您可以使用 HTTPS 来防止他人嗅探用户的流量。
标签: firebase authentication firebase-authentication