Изменение алгоритма хэширования паролей

Если вы используете магазин совместно с какими-либо плагинами (или же по другой причине) вам может потребоваться изменить алгоритм хэширования паролей пользователей в базе данных. К счастью, система позволяет с легкостью сделать это.

Hasher - это класс, реализующий интерфейс App\Services\Auth\Hashing\Hasher и содержащий логику хэширования и проверки хэша.

Класс хэшера регистрируется в файле /config/auth.php:

/config/auth.php
'hasher' => \App\Services\Auth\Hashing\BcryptHasher::class

Список hasher'ов, поставляемых "из коробки":

  • App\Services\Auth\Hashing\BcryptHasher

  • App\Services\Auth\Hashing\WhirlpoolHasher

  • App\Services\Auth\Hashing\Sha256Hasher

  • App\Services\Auth\Hashing\Sha512Hasher

  • App\Services\Auth\Hashing\CallbackHasher

Если же хэшера, реализующего требуемый алгоритм в этом списке нет, вы можете написать собственный.

Пример класса-хэшера, использующего алгоритм md5:

/app/Services/Auth/Hashing/Md5Hasher.php
<?php
declare(strict_types = 1);

namespace App\Services\Auth\Hashing;

class Md5Hasher implements Hasher
{
    /**
     * {@inheritdoc}
     */
    public function make(string $plainPassword): string
    {
        return md5($plainPassword);
    }

    /**
     * {@inheritdoc}
     */
    public function check(string $plainPassword, string $hashedPassword): bool
    {
        return md5($plainPassword) === $hashedPassword;
    }
}

Мы не рекомендуем использовать алгоритм md5 для хранения паролей в базе данных из-за его низкой устойчивости к перебору и обилию радужных таблиц. Использование стандартного алгоритма bcrypt (с которым поставляется L-Shop) является наиболее разумным решением.

Учтите, что после проделывания вышеизложенных операций больше никто не сможет войти под существующими паролями в аккаунт. Вам нужно будет удалить всех пользователей (вручную или же командой user:delete) и попросить зарегистрироваться снова.

Last updated