访问现有的电子邮件语料库比访问传入的流要简单得多。例如,获得对某人系统的几分钟访问权可以轻松搜索他们的电子邮件。因此,对于攻击者可以访问旧邮件但不能访问新传入邮件流的情况:
您依赖用户在收到密码后更改密码(不太可能,因为您已经告诉他们密码是什么),或者删除(永久,不存档或移动到“垃圾”文件夹,也不太可能)提醒信息。
如果这没有发生,那么如果我稍后可以访问用户的电子邮件帐户,那么(有限时间/有限使用,甚至可能受到限制,攻击者无法轻易使用它)重置链接将不会是任何对我有用,但肯定有(很可能仍然有效)密码。
此外,通过向我发送纯文本密码,您可以证明您已将其存储在可访问的地方。在大多数情况下,不需要这样做,因为您不需要加密密码(和盐/胡椒),您只需要对其进行哈希处理。如果它是加密的,那么任何有权访问数据库和解密密钥的人(例如,可能是大多数员工,或者任何窃取数据库代码的人)都能够获得纯文本密码。如果它是散列的,那么你必须在散列发生之前得到它(例如在登录会话期间)。
此外,尽管人们不应该这样做,但在多个站点上使用相同的密码(或非常相似的密码)是很常见的。这意味着您不是提供一种只进入一个帐户的方法,而是提供一种进入多个帐户的方法。
对于另一种情况,攻击者可以访问所有传入的邮件(甚至可能在用户看到之前删除传入的邮件),这些都不安全。电子邮件帐户是高风险的,因为如果您有这种访问权限,那么您很可能会访问用户拥有帐户的每个站点,并生成密码重置。为避免这种情况,您需要使用除(或以及)您的电子邮件帐户之外的其他东西来获得访问权限,例如双重身份验证。
请注意,即使在后一种情况下,重置链接仍然更好:如果攻击者通过重置链接更改用户的密码,那么当用户尝试登录时,他们会发现有问题(为时已晚,但至少他们知道)。如果您只是提供密码,那么用户不知道攻击者已经悄悄地获得了访问权限。