使用电子邮件安全密码重置网址?

时间:2014-06-01 10:50:45

标签: php security email password-recovery

我建立一个有限数量用户的PHP网站(最多20个)。我花了很多时间来保护它并对这个主题进行了大量的研究。

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

我可以使用安全问题或将代码链接到必须由管理员提供的令牌以便使用令牌网址(由于用户数量有限而可管理),但我可以相反,避免这样做。

我注意到Facebook,Tumblr以及可能更多人使用方便的方式发送带有网址的电子邮件而没有其他安全问题等。考虑到安全性是这些公司的首要任务之一,他们如何设法使这个过程安全(我认为是这样)?是否有任何特殊的安全检查?或者,电子邮件 - 流量 - 拦截 - 安全漏洞有点过分夸大了吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

  1. 用户忘记了密码。
  2. 该帐户已遭到入侵。
  3. 在第一种情况下,电子邮件只是为了方便,没有真正的安全需求。最好的方法是花一个真正的短时间来使用重置令牌,或者如果你真的偏执,就用cookie来检查。

    在第二种情况下,您必须确保最终用户获得电子邮件,而不是攻击者。因此,您无法在注册后更改电子邮件,从而将帐户安全性与这些电子邮件帐户相关联。

    在这两种情况下,你都无法做到。安全问题根本不安全,除非用户足够聪明,不能回答问题,而是在其中添加另一个更安全的密码。最后,它与重置电子邮件的问题相同。

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

答案 1 :(得分:1)

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