较旧的php版本的password_compat - php

PHP 5.5将support密码功能password_hash()password_verify()。还有一个file在> 5.3.7中添加此功能。

我的问题是我当前正在运行debian软件包5.3.3-7 + squeeze14。

有没有办法使此功能在旧的PHP版本中可用?

参考方案

所以,在我开始之前,让我先说清楚一件事。我是相关图书馆(以及5.5版补丁)的作者。

话虽如此,其他人提到的是绝对正确的。 5.3.7是最低版本的原因是,所有以前的版本在bcrypt实现中都有一个错误,该错误可能导致使用高字节字符(代码点> = 128)的密码熵丢失。

这就是5.3.7是最低版本的主要原因。我强烈建议升级到至少5.3.7,但最好是最新版本(在不太老的版本中发现了许多重大的安全问题)。

现在,如果卡在较低版本上该怎​​么办?您可以分叉库并将$2y$调整为$2a$。那至少会让你工作。以这种方式生成的密码可以在将来的版本中移植(该库旨在能够验证较早的crypt()密码)。

但是,我建议您不要这样做。只需升级到更新版本的PHP。并不是那么困难(dotdeb中的deb包可以为您做这件事)。

如果您确实坚持使用旧版本,则建议您使用为此目的而设计的库。类似于我的PasswordLib或PhPass(请注意,您只应使用该库的链接版本,github上还有其他几处截然不同)。

PHP getallheaders替代 - php

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

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…

比较MySQL中的字符串是否容易受到定时攻击? - php

我正在为用户密码部署经典的哈希保护。登录时提交的密码先进行加盐,散列,然后与数据库中已存储的散列进行比较。但不是使用PHP函数调用来比较现在散列的用户输入和存储的散列,而是在数据库中进行比较-更精确地,使用WHERE子句(注意:由于各种原因,盐已经被人们所知此比较开始,但密码不是)。由于用户名是唯一的,因此以下查询有效地告诉用户名和密码对是否匹配:SELEC…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

生成密码重置密码 - php

我正在做一个允许用户重设密码的模块。我注意到大多数网站如何提供确认链接,其中包含具有唯一哈希值的查询字符串。我的问题是:每次同一用户请求忘记密码时,如何生成此唯一哈希?我是否应该将此哈希存储在数据库中,以后再用于验证?会安全吗?还是应该创建某种算法来生成一次性密码?如何生成OTP? 参考方案 是的你应该生成随机重置令牌。参见例如this answer。将其存…