zend-framework – 如何生成随机密码或临时URL,以便在Zend Framework中重置密码?

前端之家收集整理的这篇文章主要介绍了zend-framework – 如何生成随机密码或临时URL,以便在Zend Framework中重置密码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用Zend_Auth_Adapter_DbTable的基本身份验证过程.我在身份验证控制器上有登录和注销操作.现在我想通过自动生成密码,保存新密码以及向他们发送包含新生成密码的电子邮件来创建一个重置忘记密码的功能.

这样做的最佳流程是什么?我该如何生成新密码? Zend Framework是否有任何可以使这更容易的东西?

我还听说过发送一封电子邮件,其中包含一个短期页面链接,可以让他们设置一个新密码.如何使用Zend Framework完成这项工作?

Zend Framework没有密码生成类.这是一篇关于如何使用PEAR模块Text_Password生成密码的文章
https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/howdoi/?p=118

但是,在普通电子邮件中发送密码并不是一种好的安全措施.相反,您应该重置他们的帐户,以便他们可以在不提供密码的情况下临时登录(给定您在电子邮件中发送的URL过期),一旦他们登录,就要求他们将自己的密码更新为他们所知道的密码.然后存储密码的盐渍哈希值.

这里有一些建议在Zend Framework中做到这一点:

>使用以下字段定义表AccountReset:reset_id(GUID主键),account_id(对Accounts.account_id的引用)和到期(时间戳).
>实现一个名为AccountController :: resetAction()的动作,即在用于创建帐户,登录,更改密码等的同一个控制器中.
>当用户选择重置其帐户时,在AccountReset表中插入一个新行,其中包含新GUID,对用户帐户的引用以及将来30分钟左右的到期时间.
>发送电子邮件到该用户的档案地址,包括他应点击的URL:“https … / account / reset / reset_id /< GUID>” (如果您对路由规则很聪明,可以缩短该URL,但将GUID保留在其中).
>当AccountController :: resetAction()收到请求时,它会在AccountReset表中查找其reset_id参数.如果该GUID存在且未到期时间,则向用户显示更改其密码的表单(无需对其进行身份验证并登录).
>如果resetAction()收到没有GUID的请求,或者数据库中不存在GUID,或者该行已经过期,则此操作可能会向用户显示一个按钮以启动新的重置请求,并且发送包含新GUID的电子邮件.记得让这个按钮成为POST请求!

由于GUID仅通过电子邮件传递给该用户的地址,因此没有其他人可以获得更改密码的权限.即使用户的电子邮件被截获,GUID也只有有限的时间授予该访问权限.

如果您想要更加谨慎,可以记下AccountReset表中的客户端IP地址,并要求在30分钟的窗口内从具有相同IP地址的客户端更改密码.

这只是袖手旁观,我没有实施或评估它是否具有适当的安全性.如果您负责实施安全性,那么您有责任阅读安全问题.一个备受推崇的PHP安全资源是http://phpsecurity.org/.

原文链接:https://www.f2er.com/php/135672.html

猜你在找的PHP相关文章