生成密码重置密码 - php

我正在做一个允许用户重设密码的模块。我注意到大多数网站如何提供确认链接,其中包含具有唯一哈希值的查询字符串。

我的问题是:每次同一用户请求忘记密码时,如何生成此唯一哈希?我是否应该将此哈希存储在数据库中,以后再用于验证?会安全吗?还是应该创建某种算法来生成一次性密码?如何生成OTP?

参考方案

是的你应该

生成随机重置令牌。参见例如this answer。
将其存储在数据库中(可能有到期时间)
使用重置令牌向用户发送电子邮件。
用户访问带有查询字符串中的重置令牌的重置密码页面。
检查数据库以查看与重置令牌关联的用户,以及到期时间是否还没有过去。
如果一切顺利,请允许用户重置密码并从数据库中删除重置令牌。

关于重置令牌(或任何您想调用的令牌)的生成似乎有很多困惑。请阅读我链接的答案,不要用散乱的种子和弱种子重塑轮子。

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

php fopen相对路径断开-神秘 - php

我知道“必须进行某些更改”,但是我的代码似乎整夜无故中断。我的服务器目录结构是这样的: / /脚本 /审计 /其他事情我在“脚本”文件夹中有一个脚本(假设它被称为“ /scripts/MyScript.php”),该脚本使用curl收集网页中的数据,并将其日期过的副本保存在“审核”文件夹中。要写入审核文件夹,我使用了 $ fh = fopen(“ ./ au…

标头和包含项之间有什么区别,应在何处使用 - php

我对两个词感到困惑header ("Location:homepage_php");include("homepage.php");我猜想标题是在检查密码过程后使用的,关于include,您可以在任何地方使用它。但是我不确定它们之间的实际区别是什么以及应该使用这两个中的哪个位置。 参考方案 标头将用户转发到新页面,因此…

内置函数的PHP源代码 - php

PHP是用C编写的吗?在哪里可以找到PHP源代码,而无需下载所有源代码? 参考方案 PHP函数是用C编写的-您可以在lxr.php.net中找到可浏览的源代码。例如:http://lxr.php.net/opengrok/xref/PHP_5_3/ext/standard/array.c#1242PS:通常,只需在搜索中键入函数名称即可找到函数定义。使用诸如…