Prestashop 1.7 Шифрование Паролей Клиентов?

Prestashop 1.7 Шифрование Паролей Клиентов?

29.04.2019 02:13:58 Просмотров 66 Источник

Я сделал некоторую стороннюю систему, основанную на php для Prestashop 1.6. Он работает с подключением непосредственно к базе данных Prestashop. И знайте, что я обновил свой Presta до 1.7.5.1, и он работает. Только он больше не входит в систему клиентов, потому что, как я вижу, шифрование пароля изменилось. Я использовал md5(COOKIE_KEY."пароль") для 1.6, но я вижу пароли на 1.7 ничего похожего на md5. Не могли бы вы рассказать мне, как шифрование. (это станет намного лучше, если вы скажете мне с php-кодом)

Тема 1.7.5.1

$2y$10$6b460aRLklgWblz75NAMteYXLJwjfV6a / uN8GJKgJgPDBuNhHs.Юм

для 123456

У вопроса есть решение - Посмотреть?

Ответы - Prestashop 1.7 Шифрование Паролей Клиентов? / Prestashop 1.7 Customer Password Encryption?

Bruno Leveque

29.04.2019 03:43:10

Тема 1.7.x теперь использует bcrypt в качестве предпочтительного метода хэширования (md5 все еще поддерживается).

Чтобы лучше понять поведение между электронной версии v1.6.x против 1.7.x для проверки паролей рассмотрим getByEmail()в классе Customer:

/**
  * Return customer instance from its e-mail (optionally check password).
  *
  * @param string $email e-mail
  * @param string $plaintextPassword Password is also checked if specified
  * @param bool $ignoreGuest
  *
  * @return bool|Customer|CustomerCore Customer instance
 */
 public function getByEmail($email, $plaintextPassword = null, $ignoreGuest = true)

Если $plaintextPassword, то зашифрованная версия пароля извлекается с помощью:

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

Класс хэширования может быть создан путем выполнения:

$crypto = ServiceLocator::get('\\PrestaShop\\PrestaShop\\Core\\Crypto\\Hashing');

Пример решения с использованием движка 1.7 классы/методы:

<?php

namespace PrestaShop\PrestaShop\Core\Crypto;
include('config/config.inc.php');

$plaintextPassword = '123456';
$crypto = new Hashing;
$encryptedPassword = $crypto->hash($plaintextPassword, _COOKIE_KEY_);

echo 'Clear: '.$plaintextPassword.'<br />Encrypted: '.$encryptedPassword;

/* Result (example)
Clear: 123456
Encrypted: $2y$10$6b460aRLklgWblz75NAMteYXLJwjfV6a/uN8GJKgJgPDBuNhHs.ym */

Альтернативное решение, без необходимости включать какие-либо файлы/методы PrestaShop:

<?php

$plaintextPassword = '123456';
$encryptedPassword = password_hash($plaintextPassword, PASSWORD_BCRYPT);
echo var_dump(password_verify($plaintextPassword, $encryptedPassword)); // True if encryption is matching

Надеюсь, это поможет.

https://stackoverflow.com/questions/55895336/prestashop-1-7-customer-password-encryption/55895790#comment98458717_55895790
Спасибо, но я не хочу включать какой-либо файл prestashop. Итак, как поддерживается md5, как раньше "(md5 все еще поддерживается) " можно ли использовать старый тип шифрования или я могу шифровать так же, как это, не включая файл prestashop?
https://stackoverflow.com/questions/55895336/prestashop-1-7-customer-password-encryption/55895790#comment98470744_55895790
@AnılTürk, я бы настоятельно не советовал использовать md5, поскольку уровень шифрования теперь считается слишком слабым. Я отредактировал свой ответ, чтобы предоставить альтернативное решение с использованием bcrypt и без необходимости включать какие-либо файлы PrestaShop или ключ cookie. Я надеюсь, что это поможет ;-)
https://stackoverflow.com/questions/55895336/prestashop-1-7-customer-password-encryption/55895790#comment101513582_55895790
Я пробовал, но он всегда возвращает true.Также я попытался включить решение файла конфигурации. Он перенаправляет домашнюю страницу магазина.
Закрыть X