使用电子邮件保护密码重置 URL? [复制]

Posted

技术标签:

【中文标题】使用电子邮件保护密码重置 URL? [复制]【英文标题】:Secure password reset url with email? [duplicate] 【发布时间】:2014-07-21 15:49:47 【问题描述】:

我正在建立一个用户数量有限的 php 网站(最多 20 个)。我已经花费了相当长的时间来保护它,并且对该主题进行了大量研究。

我在考虑安全密码重置系统时遇到了问题。我想使用最方便的方法,即向用户发送一封电子邮件,其中包含用于重置密码的令牌的 url。令牌绑定到某个用户,并且仅在一定时间内有效。唉,这似乎并不安全,因为电子邮件流量可以被拦截。我一直在考虑对令牌进行额外检查,例如 ip 和浏览器 (http_user_agent),但这也可以绕过。

我可以使用安全问题或将代码链接到必须由管理员提供的令牌才能使用令牌 URL(由于用户数量有限,因此可以管理),但我宁愿避免那个。

我注意到 Facebook、Tumblr 以及可能更多的网站都使用方便的方式发送带有 URL 的电子邮件,而无需进一步的安全问题等。考虑到安全是这些公司的首要任务之一,他们如何设法使这个过程安全(我认为是)?他们是否进行了任何特殊的安全检查?还是电子邮件流量拦截安全泄漏有点过分夸大了?

提前致谢。

【问题讨论】:

***.com/questions/522967/… 【参考方案1】:

我不知道 facebook 和 twitter(我从来不用重设密码),但根据我的经验,没有什么真正安全的东西可以自动方便地用于保护密码重设电子邮件。使用这种电子邮件的情况有两种:

    用户忘记了密码。 帐户已被盗用。

在第一种情况下,电子邮件只是为了方便而存在,并不真正需要安全性。最好的办法是花很短的时间来使用重置令牌,或者如果您真的很偏执,请检查 cookie。

在第二种情况下,您必须确保最终用户收到电子邮件,而不是攻击者。因此,您可以防止在注册后更改电子邮件,从而将帐户安全性与电子邮件帐户的这些联系起来。

在这两种情况下,您都无能为力。安全问题根本不安全,除非用户足够聪明,不会回答问题,而是在其中输入另一个更安全的密码。最后还是和重置邮箱一样的问题。

按照您的建议,唯一更安全的其他方法是让管理员检查密码重置请求。如果您的用户数量非常少,它会起作用,但每天工作仍然会很痛苦。

【讨论】:

【参考方案2】:

可以考虑基于会话重置密码,因为重置链接将对会话之外的任何人空闲

【讨论】:

以上是关于使用电子邮件保护密码重置 URL? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

国密商密普密以及 RSASM2 的界定和区分

重置密码时出错

Cisco路由器密码设置命令

Spring oauth2 指定受保护和不受保护的资源

跨 Asp.NET Core 和 Framework 的数据保护提供程序(生成密码重置链接)

php电子表格密码保护