启用“隐藏电子邮件地址”时,“通过电子邮件登录”会切换到错误的字符串

复现步骤:

  1. 启用站点设置 hide email address taken(通常处于禁用状态),该设置描述为:“在注册和忘记密码表单中,不告知用户是否存在使用该邮箱地址的账户。”

  2. 从新的浏览器会话中,尝试使用邮箱 :email: 登录,并提供一个无效的用户名,例如 codinghorror

预期行为

应显示以下字符串之一的错误消息文本,且不泄露账户是否存在:

js.email_login.complete_email

如果存在与 codinghorror@example.com 匹配的账户,您稍后将收到一封包含登录链接的电子邮件。

js.email_login.complete_username

如果存在与 codinghorror 匹配的账户,您稍后将收到一封包含登录链接的电子邮件。

实际行为

错误消息文本错误地表明存在匹配项,即使实际上并无匹配。

js.email_login.complete_email_found

我们找到了与 codinghorror@example.com 匹配的账户,您稍后将收到一封包含登录链接的电子邮件。

js.email_login.complete_username_found

我们找到了与用户名 codinghorror 匹配的账户,您稍后将收到一封包含登录链接的电子邮件。

说明

虽然“重置密码”流程中该逻辑工作正常,但似乎“通过邮箱登录”的工作流程也应遵循相同的逻辑。

2 个赞

我不认为这是一个漏洞。该行为与上述描述完全一致。

但如果我们有另一份文案,在这种情况下我们应该使用它,@eviltrout

1 个赞

抱歉如果这造成了困惑。所感知到的 bug 是:当(且仅当)启用“隐藏已存在的邮箱地址”设置,并且输入的邮箱登录值不匹配时:

系统本应显示故意模糊的 js.email_login.complete_emailjs.email_login.complete_username 字符串,但却错误地显示了误报,使用了 js.email_login.complete_email_foundjs.email_login.complete_username_found 字符串。

如果禁用该站点设置(默认状态),则会正确显示“未找到匹配项”的字符串。

4 个赞

这应该能解决问题:

8 个赞

是的,现在看起来正确了。谢谢!:trophy:

5 个赞