首页 > 解决方案 > 从 Prestashop 1.6 MD5 加密更新到 1.7

问题描述

我正在将我的 PS 1.6 更新到 1.7。我知道 PS 1.6 使用这种加密方法md5(_COOKIE_KEY_.$passwd),但我们将其转换为md5($passwd)以前的版本,以便与我们以前的商店 not-prestashop 兼容。

现在我们要更新到 1.7,我们看到加密方法已更改为 hash()。我们已经实现了登录以前的用户更改此功能:getByEmail(),但现在我们希望注册正常工作(将密码保存为md5($plaintextpassword))。我们知道新的加密方法更加安全,不建议使用md5($plaintextpassword),但现在我们无法更改。

我们在 Classes/Customer.php 中更改了所有行:

$this->passwd = $crypto->hash($password);

至:

$this->passwd = md5($password);

但是当我们注册一个新用户时,所有这些变化,它被保存为 hash() 方法,格式为 $2y$10$VPm9ygay2ldd0Vu0J4ttQuOdD/mIytURV/nXCXKs4GcB4AkIWtaQm 而不是:bcef5cffa6f4bb0abb94cf6fa7a7cb2f。我没有找到必须更改的位置才能以所需的格式保存?

标签: encryptionprestashopprestashop-1.6password-encryptionprestashop-1.7

解决方案


您必须覆盖 PrestaShop 并添加新的附加密码检查器:

if(!loginWithOriginalMethod($password)) {
    loginWithAdditionalMethod($password);
}

通过这种方式,您的新老客户都可以登录您的商店


推荐阅读