Doctor911
-
Постов
5 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Загрузки
База знаний IPS Community Suite 4
База знаний IP.Board 3.x
Форумы
События
Магазин
Совместные покупки
Сообщения, опубликованные Doctor911
-
-
1. Находите класс IPSText
adminsourcesbasecore.php
2. Находите метод parseCleanValue
Пардон, глазами недоучки не смог разглядеть ответа. Спасибо за пояснение, сегодня буду эксперементировать.
-
Не нужно это отключать.
$pass = IPSText::parseCleanValue('qwe!rty'); $salt = 'a"J9T'; $cryptPass = md5( md5($salt) . md5( $pass ) );
Я благодарен Вам за ответы, но хотелось бы самому решать, что нужно, а что нет)
Полностью отдаю себе отчет в том, какими могут быть последствия экспериментов с безопасностью. Однако меня все же интересует решение проблемы именно тем способом, который я предложил.
-
А зачем вообще это нужно?
Второе.
Да и не только !. Если бы не заменялись некоторые символы, то это был бы не форум, а "дырка для кулцхакеров".
У меня есть небольшой игровой проект. Регистрация пользователей происходит на форуме. При входе в игру через игровой клиент происходит обращение к базе. Клиент проверяет пароль по упомянутой мною формуле. Однако если у пользователя в пароле есть восклицательный знак, то проверку пройти не удается.
В общем, хотелось узнать, какие еще символы заменяются в пароле на другие, и как это можно отключить.
-
Приветствую, читатель.
При регистрации в IPB используется следующий метод шифрования пароля:
md5 ( md5 ( $salt ) . md5 ( $password ) )
Однако при регистрации пользователя с паролем, в котором содержится символ "!" (т.е. восклицательный знак), зашифрованный пароль не соответствует данному алгоритму.
Случай 1.
Пользователь Test1 зарегистрировался с паролем qwerty и солью :l3>% (соль, очевидно, генерируется случайным образом без участия пользователя).
Вышеупомянутая формула дает результат 95be0395c5c598db50ab82d05ccad359.
В таблицу базы данных, хранящей хэши паролей, тоже записывается значение 95be0395c5c598db50ab82d05ccad359.
Проверка с использованием элементарнейшего php-кода подтверждает данный результат.
$pass = 'qwerty'; $salt = ':l3>%'; $cryptPass = md5( md5($salt) . md5( $pass ) ); echo $cryptPass;
Случай 2.
Если пользователь Test2 регистрируется с паролем qwe!rty и солью a"J9T, в таблицу заносится значение 101c61df7c8cf10340f98534bbfa3d90.
Однако если мы проведем проверку, используя приведённый выше php-код, то мы получим другое значение - 5c4966345e8b631a1585d78750dadd34.
Понятное дело, что метод шифрования не меняется. Очевидно, что из передаваемой строки символ восклицательного знака или изымается, или заменяется на какой-либо другой.
Поэтому возникает вопрос: как с этим бороться?
Спасибо.
Проблемы с хэшированием паролей в IPB 3.4.6
в Техническая поддержка IP.Board
Опубликовано
Нашел строки, отвечающие за подмену символов при регистрации. Расположен этот отрывок в файле adminsourcesbasecore.php
Символы, стоящие в кавычках, заменяются на собственное значение в Юникоде.