0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 1551 Просмотров
*

RYUMASHKIN

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Доброго времени суток достопочтенные форумчане.
Возник вопрос следующего толка.
Необходимо состыковать БД стороннего скрипта и Joomla соответсвенно, и соответственно перенести пользователей в Joomla чтобы олни могли авторизоваться со своими паролями.

Не подскажите как правильно завернуть пароль ?? Если не сложно то на простом примере.
« Последнее редактирование: 04.10.2016, 05:07:55 от RYUMASHKIN »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
md5 поможет, если у вас в стороннем скрипте пароль хранится в открытом виде, если нет, то никак.
*

RYUMASHKIN

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
md5 поможет, если у вас в стороннем скрипте пароль хранится в открытом виде, если нет, то никак.
То есть, вы хотите сказать что пароль в Joomla хранится просто в MD5?? Без солей и свистоплясок?  Да быть такого не может.
*

RYUMASHKIN

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Ладно, зайдем с другой стороны.
Со стороннего скрипта я перенесу пользователей с принудительной сменой пароля к примеру.
Отправлю ему письмо со ссылкой на активацию нового пароля.
И теперь вопрос каким образом мне захешировать этот новый пароль для записи в БД??
К примеру у меня это работает образно говоря так

Код
$passwd = sha1($pkey . $password);
//где $pkey - это персональный уникальный ключ генерируемый для пользователя
*

SeBun

  • BanMaster
  • 4015
  • 259 / 5
  • @SeBun48
Arkadiy немного о другом говорил. Пароли в Joomla хранятся не просто в виде хеша с солью, там другой алгоритм. В Joomla 3 паролями занимается класс JCrypt. Проверить свой пароль можно так:
   
Код: php
<?php
//проверка пароля в Joomla 3.х из стороннего скрипта. Этот скрипт лежит в корне сайта.
    if (!defined('_JEXEC')) {//подключение к Joomla
        define('_JEXEC', 1);
        define('JPATH_BASE', dirname(__FILE__));
        define('DS', DIRECTORY_SEPARATOR);
        require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
        require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php';
    }

//проверка пароля  
    $user = JFactory:: getUser('admin');//проверяем пользователя с логином admin
    $Password = "test";// пароль
 
    $verifyPass = JUserHelper::verifyPassword($Password, $user->password, $user->id);
    if($verifyPass) {echo 'Верный пароль!';}else{echo 'Неверный пароль!';}
?>

Так же можете в файле libraries\joomla\crypt\password\simple.php посмотреть, как Joomla обрабатывает разные типы паролей.

Вторую часть вопроса не понял. Если вы переносите своих пользователей в Joomla, то естественно ваш алгоритм создания хеша отличается от алгоритма этой CMS и пароль она дешифровать не сможет. Но вы можете пойти другим путем - сгенерировать всем новые пароли и сохранить их в MD5. В админке (или в БД) можете всех новых пользователейй деактивировать и уведомить о том, что нужно срочно сменить пароль. При этом пароль для каждого пользователя вместе с уведомлением выслать на e-mail. Пользователь зайдет уже в Joomla и создаст в ней свой пароль.

Конечно, можно поизвращаться, например, сбрутить все ваши sha1-пароли, но это вряд ли целесобразно. Как я понял из беглого просмотра исходников, Joomla 3 использует шифрование Blowfish, но поддерживает и md5. Поэтому вам проще сгенерировать пароли именно в MD5 и выслать их юзерам, чем заниматься какими то дополнительными обработками.

То есть, вы хотите сказать что пароль в Joomla хранится просто в MD5?? Без солей и свистоплясок?  Да быть такого не может.
По умолчанию - нет. Но такая возможность поддерживается.
« Последнее редактирование: 02.10.2016, 12:04:38 от SeBun »
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

RYUMASHKIN

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Arkadiy немного о другом говорил. Пароли в Joomla хранятся не просто в виде хеша с солью, там другой алгоритм. В Joomla 3 паролями занимается класс JCrypt. Проверить свой пароль можно так:
   
Код: php
<?php
//проверка пароля в Joomla 3.х из стороннего скрипта. Этот скрипт лежит в корне сайта.
    if (!defined('_JEXEC')) {//подключение к Joomla
        define('_JEXEC', 1);
        define('JPATH_BASE', dirname(__FILE__));
        define('DS', DIRECTORY_SEPARATOR);
        require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
        require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php';
    }

//проверка пароля   
    $user = JFactory:: getUser('admin');//проверяем пользователя с логином admin
    $Password = "test";// пароль
 
    $verifyPass = JUserHelper::verifyPassword($Password, $user->password, $user->id);
    if($verifyPass) {echo 'Верный пароль!';}else{echo 'Неверный пароль!';}
?>

Так же можете в файле libraries\joomla\crypt\password\simple.php посмотреть, как Joomla обрабатывает разные типы паролей.

Вторую часть вопроса не понял. Если вы переносите своих пользователей в Joomla, то естественно ваш алгоритм создания хеша отличается от алгоритма этой CMS и пароль она дешифровать не сможет. Но вы можете пойти другим путем - сгенерировать всем новые пароли и сохранить их в MD5. В админке (или в БД) можете всех новых пользователейй деактивировать и уведомить о том, что нужно срочно сменить пароль. При этом пароль для каждого пользователя вместе с уведомлением выслать на e-mail. Пользователь зайдет уже в Joomla и создаст в ней свой пароль.

Конечно, можно поизвращаться, например, сбрутить все ваши sha1-пароли, но это вряд ли целесобразно. Как я понял из беглого просмотра исходников, Joomla 3 использует шифрование Blowfish, но поддерживает и md5. Поэтому вам проще сгенерировать пароли именно в MD5 и выслать их юзерам, чем заниматься какими то дополнительными обработками.
По умолчанию - нет. Но такая возможность поддерживается.


Я планировал сделать просто.
В цикле я делаю выборку из БД
имя пользователя, email и инициирую для всех пользователей автоматически процедуру смены пароля. Тут я в принципе могу не мучиться и создать пользователя в таблице с любым значением хеша в поле пароля.
Отправляю пользователю письмо со ссылкой на смену пароля.
И вот этот введенный новый пароль мне нужно будет захешировать в 2 базы.
Как в мою базу происходит процесс я понимаю, потому и интересуюсь как хешировать пароль для Joomla. Хотелось бы просто оставить процесс регистрации, активации, смены пароля на моем скрипте.

Но возможно, наверное так даже будет проще, все действия с учетными записями передать в Joomla  только дописать функции для создания пользователей в моей базе данных с моим алгоритмом хеширования.

*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ну вам же дали метод JUserHelper::verifyPassword($Password, $user->password, $user->id), ну посмотрите же его :) ну не копировать же простыни кода, если файлы доступны всем. вам нужна часть, в которой участвует третий переданный параметр $user->id (запускается механизм перехеширования, если используемый алгоритм старый, например md5)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
То есть, вы хотите сказать что пароль в Joomla хранится просто в MD5?? Без солей и свистоплясок?  Да быть такого не может.
соль есть, но для совместимости со старыми паролями понимает и без соли.
*

RYUMASHKIN

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Всем спасибо кто отозвался, нужно было просто плюнуть на все и отдохнуть денек.
После отдыха посмотрел=>почтила=>реализовал.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Перестали работать переходы по меню сайта

Автор AlexP750

Ответов: 12
Просмотров: 481
Последний ответ 06.02.2024, 12:42:26
от AlexP750
[Решено] Ссылка на домен и текущий шаблон в блоге категории

Автор goga_pgasovav

Ответов: 2
Просмотров: 343
Последний ответ 06.03.2023, 16:30:23
от goga_pgasovav
[Решено] Не добавляется CSS-класс страницы

Автор Strelok760

Ответов: 16
Просмотров: 1302
Последний ответ 02.03.2023, 16:14:47
от Танита Сар
[Решено] Получить список тегов каждого материала в блоге категории

Автор goga_pgasovav

Ответов: 1
Просмотров: 393
Последний ответ 02.03.2023, 14:20:21
от goga_pgasovav
[Решено]Пути к изображениям изменяются на images/remote/

Автор Шмайсер

Ответов: 1
Просмотров: 377
Последний ответ 11.02.2023, 19:31:16
от Шмайсер