重置密码而不通过电子邮件发送给用户

时间:2010-04-16 11:42:37

标签: php email passwords

我们需要为使用我们网站的用户提供重置密码的方法。典型的方法是向用户发送电子邮件并要求单击要重置的链接。

问题是我们不想仅仅为了重置密码而运行邮件服务器。是否还有其他聪明的方法来重置密码而无需邮寄用户?

编辑:这适用于忘记密码的用户。

7 个答案:

答案 0 :(得分:3)

您需要某种方法来验证用户的身份,以防止其他人重置密码。也许你可以让他们在注册时设置一些问题(比如妈妈的娘家姓,喜欢的颜色)。他们只有在正确回答问题时才能重置密码。

答案 1 :(得分:2)

您可以立即使其当前密码失效,并要求他们在下次登录时进行更改。一些密码重置系统可以做到这一点。

编辑:由于这是针对忘记密码而非强制更改的用户,因此您应该直接将这些密码直接发送到忘记密码时通过电子邮件发送给他们的链接。让他们输入他们注册的电子邮件地址以及您可以验证的其他一些数据。基本上,其他答案说的是什么。

答案 2 :(得分:2)

我和一个非常奇怪且要求很高的客户有同样的问题。该站点是一个公司内部网,可以通过VPN访问远程办公人员。其中一个要求(以粗体显示):

  

密码重置机制应该方便,不依赖电子邮件。必须方便地授予重新设置请求,并要求在重新设置请求之前站点信任访问者的证据

我最终做的是生成一个Manderbolt(100x100)供用户下载作为他们的“重置”令牌,以及他们必须回答的一些秘密问题。要更改密码,他们必须回答他们的问题并上传他们的分形(二次平面是根据他们的私人信息定义的,只需简单的散列就可以避免碰撞)。

这满足了一项要求,即密码重置必须基于他们拥有的以及他们知道的内容。如果他们丢失了分形或忘记了他们的秘密问题的答案,他们必须亲自出现以重新设置密码。

不完全是防弹,但它满足了当时的需求。由于大多数用户共享了许多常见的私有数据(城市,州,区号等),因此挑战在于使分形独特(至少30个像素是唯一的)。

修改

分形(相反,它的单向表示)也在其他地方使用。想想 RFID +相机

答案 3 :(得分:1)

您可以使用标准邮件发送新密码: - )。

通常,您需要验证尝试重置密码的用户是否是最初注册的用户。最简单的方法是将密码重置链接发送到注册时使用的电子邮件。或者你可以有一些安全问题,这将允许重置密码,但大多数人会选择一些非常蹩脚的东西,你最终得到的服务器很容易窃取身份。

答案 4 :(得分:1)

必须有一些类通过使用套接字直接与远程SMTP服务器(例如,ISP的SMTP服务器)通信 - 只需找到这样的类,您就不必运行私有SMTP服务器来发送电子邮件。

答案 5 :(得分:1)

使用OpenID。然后,成为OpenID服务提供商恢复用户密码的问题。而且您的用户会感谢他们不需要记住另一个臭密码。

答案 6 :(得分:0)

通常的答案是某种形式的安全问题。如果您没有让用户穿过的障碍,您可以打开系统以允许几乎任何人重置密码。