如何检查php.ini / php有关加密的设置(BLOWFISH)

问题描述 投票:0回答:1

我的网站的用户登录功能突然停止工作租用的服务器(网络托管服务)上(多年来它工作得很好。)因为我没有更改任何内容,所以数据库也没有受到影响(没有被黑客攻击或更改) ,我想服务器上的 PHP 设置或模块可能发生了一些问题(因为它是租用的服务器,我无法访问配置文件)服务器的帮助台团队告诉我他们什么也没做/没有升级。 (他们不想帮我解决这个问题。)

据我研究, crypt() 函数“停止工作”(返回 *0 而不是像以前那样正确的哈希值)。

我尝试在谷歌上搜索有关如何检查服务器端设置或加密/BLOWFISH状态的信息,但我找不到任何内容,因此非常感谢任何帮助!

之前工作过百万次的盐是这样的:

$salt=  $2a$05$2m6Jboi4zN5V2F/bvUCpH$ ;
$hashed_password = crypt($login_password,$salt);

它也不适用于我的管理员登录(登录凭据 100% 正确)

用户和管理员无法登录,系统告诉他们凭据错误,这是由于检查/匹配 crypt() 函数生成的不存在的哈希值 (*0) 造成的。 ( $password_hash_from_database !== $hashed_password_provided_by_crypt )

服务器 PHP 版本是 7.3

提前谢谢您

php ini crypt blowfish
1个回答
1
投票

我不太确定,但这可能是因为这个安全补丁:BCrypt 哈希值错误地验证盐是否被 `$ 缩短。虽然它提到的版本不涉及PHP 7,但由于这是一个安全漏洞且易于修复,估计您的服务器管理员已将这个补丁应用于您的PHP。

这里有一个解决方法,使用

$2a$05$2m6Jboi4zN5V2F/bvUCp..
代替盐。您将获得相同的加密结果,然后将结果中的盐部分替换为
$2a$05$2m6Jboi4zN5V2F/bvUCpH.

$salt2 = '$2a$05$2m6Jboi4zN5V2F/bvUCp..';
$saltr = '$2a$05$2m6Jboi4zN5V2F/bvUCpH.';
$hashed_password = crypt($login_password, $salt2);
$hashed_password = str_replace($salt2, $saltr, $hashed_password);
© www.soinside.com 2019 - 2024. All rights reserved.