Сообщений: 5
Тем: 1
Зарегистрирован: Jan 2014
Репутация:
0
04-05-2020, 02:36 AM
(Сообщение последний раз редактировалось: 04-06-2020, 07:11 PM Aleksandr87.)
Всем привет, ситуация не стандартная.
Для сравнения, sw13 присылает в бд пароль:
RQ0p/e5jI5Ue3KyGUmRPH9ToDMY=
А сборка принимает и создаёт, только такие:
$2a$10$9XjREP5eD8c8Qp8fwCwhHuPFcfX5NGgJIn0C/F8niQrk24EMhYfBy
Подскажите как изменить шифрование в sw13
Сообщений: 5
Тем: 1
Зарегистрирован: Jan 2014
Репутация:
0
04-05-2020, 10:31 AM
(Сообщение последний раз редактировалось: 04-06-2020, 11:44 PM Aleksandr87.)
Мне кажется это должно помочь
Хеширование паролей и авторизация
Для хеширования паролей в PHP существует функция password_hash():
$password = '123456';
$hash = password_hash($password, PASSWORD_BCRYPT);
var_dump($hash);
// string(60) "$2y$10$Vb.pry5vRGNrm6Y79UfBsun/RbXq2.XEGCOMpozrDwg.MNpfxvWHK"
Вторым параметром передаётся алгоритм хеширования. По-умолчанию это указанный нами bcrypt, но я рекомендую указывать его вручную, поскольку базовый алгоритм в будущем может поменяться. Будет грустно, если при очередном обновлении версии PHP на сайте отвалится авторизация.
Для проверки корректности введённого пользователем пароля используется функция password_verify():
<?php
$hash = '$2y$10$Vb.pry5vRGNrm6Y79UfBsun/RbXq2.XEGCOMpozrDwg.MNpfxvWHK';
$password = '123456';
if(password_verify($password, $hash))
echo 'Пароль правильный.';
else
echo 'Пароль неправильный.';
Ещё раз. При регистрации пользователя нужно передать пароль в функцию password_hash(), а полученный хеш сохранить в базу данных.
При попытке авторизации получаем пользователя по его логину и проверяем функцией password_verify(), соответствует ли хеш пароля тому паролю, который ввёл пользователь.
Таким образом, хранить исходный пароль больше нет смысла.
Да, разные алгоритмы хеширования генерируют хеш разной длины, поэтому рекомендуется хранить хеш в поле с типом VARCHAR(255).
Сообщений: 5
Тем: 1
Зарегистрирован: Jan 2014
Репутация:
0
04-06-2020, 11:01 AM
(Сообщение последний раз редактировалось: 04-06-2020, 11:46 PM Aleksandr87.)
Кто сможет помочь реализовать это в sw13?
Сообщений: 50
Тем: 2
Зарегистрирован: Dec 2013
Репутация:
832
А разве в sw13 нельзя выбрать тип шифрования? Помню даже в 11 был в логин сервере
Сообщений: 5
Тем: 1
Зарегистрирован: Jan 2014
Репутация:
0
Последние ревы acis больше не работают с md5. Запись разумееться появиться, только логин тебя не пропустит.
Сообщений: 2,228
Тем: 77
Зарегистрирован: Jan 2012
Репутация:
12,733
06-14-2020, 03:28 AM
(Сообщение последний раз редактировалось: 06-14-2020, 12:26 PM MrShyr.)
Aleksandr87 Написал:Последние ревы acis больше не работают с md5. Запись разумееться появиться, только логин тебя не пропустит.
Напиши в личку, сделаем. Там недостаточно просто использовать PASSWORD_BCRYPT, он создает пароль с префиксом $2y, а нам нужен $2a. Если попробовать заменить этот префикс вручную в бд после регистрации, то станет ясно что, между ними нет сильной разницы и пароль подойдет. Встроить новый метод дел на 2 минуты.
Решил положить кабель по потолку, так как очень большой пинг меня не устраивает.
Сообщений: 8
Тем: 0
Зарегистрирован: Nov 2020
Репутация:
0
MrShyr Написал:Напиши в личку, сделаем. Там недостаточно просто использовать PASSWORD_BCRYPT, он создает пароль с префиксом $2y, а нам нужен $2a. Если попробовать заменить этот префикс вручную в бд после регистрации, то станет ясно что, между ними нет сильной разницы и пароль подойдет. Встроить новый метод дел на 2 минуты.
парни решили проблему? будьте добры подскажите решение
Сообщений: 5
Тем: 1
Зарегистрирован: Jan 2014
Репутация:
0
11-08-2020, 11:44 PM
(Сообщение последний раз редактировалось: 11-08-2020, 11:54 PM Aleksandr87.)
Я свою проблему решил таким образом, накопил денег и ушёл к иностранным разработчикам, контору не скажу, они мне за это не платят) Из плюсов, идеальный геодвиг, навсегда забываешь про текстуры. Про остальное нет смысла рассказывать, всё идеально, сервер без рестарта живёт 3 месяца без глюков, но я делаю раз в неделю. Ресурсов лопает от 400 рублей, при онлайне от 100 человек. Кому интересно из новеньких админов, помогу от 0 до Открытия, за Немецкий пивас. Либо возьму к себе в команду, если будут хотя бы минимальные знания.
Добавлено через 5 минут
San9i Написал:парни решили проблему? будьте добры подскажите решение
Даже разработчик SW отказался. Выход оставить авторег. Либо найдётся человек кто сможет это сделать. Кому не писал все в отказ. Не трать время на Acis копи денег на качественное ПО.
Сообщений: 8
Тем: 0
Зарегистрирован: Nov 2020
Репутация:
-42
Aleksandr87 Написал:Даже разработчик SW отказался. Выход оставить авторег. Либо найдётся человек кто сможет это сделать. Кому не писал все в отказ. Не трать время на Acis копи денег на качественное ПО.
Стало интересно, скачал aCis, посмотрел.
Код: account = AccountTable.getInstance().createAccount(login, BCrypt.hashpw(password, BCrypt.gensalt()), currentTime);
Ага, всё ясно.
Они перешли на современный стандарт хэширования паролей - bcrypt.
С этим разобрались.
Теперь PHP.
Вот набросал функцию для хэширования пароля.
PHP код: <?php
function blowfishEncAcis(string $password = '123456'){
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 10]);
return str_replace('$2y$10$', '$2a$10$', $hash);;
}
echo blowfishEncAcis('Твой пароль');
Стоит учесть, что после PHP 5.3 индикатор сменился с $2a$ на $2y$.
Проверка пароля стандартно.
PHP код: <?php
if (password_verify($password, $hash)) {
echo 'OK!';
} else {
echo 'Fiasko bratan;)';
}
Всё, теперь можно обойтись без авторегистрации ;-)
Сообщений: 8
Тем: 0
Зарегистрирован: Nov 2020
Репутация:
0
Ofey Написал:Стало интересно, скачал aCis, посмотрел.
Код: account = AccountTable.getInstance().createAccount(login, BCrypt.hashpw(password, BCrypt.gensalt()), currentTime);
Ага, всё ясно.
Они перешли на современный стандарт хэширования паролей - bcrypt.
С этим разобрались.
Теперь PHP.
Вот набросал функцию для хэширования пароля.
PHP код: <?php
function blowfishEncAcis(string $password = '123456'){
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 10]);
return str_replace('$2y$10$', '$2a$10$', $hash);;
}
echo blowfishEncAcis('Твой пароль');
Стоит учесть, что после PHP 5.3 индикатор сменился с $2a$ на $2y$.
Проверка пароля стандартно.
PHP код: <?php
if (password_verify($password, $hash)) {
echo 'OK!';
} else {
echo 'Fiasko bratan;)';
}
Всё, теперь можно обойтись без авторегистрации ;-)
Доброе утро!Был бы вам очень признателен, если бы обьяснили что и куда пихать=)
|