Doctor911
Пользователи
-
В сети
-
Количество сообщений
5 -
Reputation
1 Doctor911's Reputation -
Solutions
1 Doctor911's Solutions
-
Проблемы с хэшированием паролей в IPB 3.4.6
Нашел строки, отвечающие за подмену символов при регистрации. Расположен этот отрывок в файле adminsourcesbasecore.php $val = str_replace( "&" , "&" , $val ); $val = str_replace( "<!--" , "<!--" , $val ); $val = str_replace( "-->" , "-->" , $val ); $val = str_ireplace( "<script" , "<script" , $val ); $val = str_replace( ">" , ">" , $val ); $val = str_replace( "<" , "<" , $val ); $val = str_replace( '"' , """ , $val ); $val = str_replace( "n" , "<br />" , $val ); // Convert literal newlines $val = str_replace( "$" , "$" , $val ); $val = str_replace( "!" , "!" , $val ); $val = str_replace( "'" , "'" , $val ); // IMPORTANT: It helps to increase sql query safety. Символы, стоящие в кавычках, заменяются на собственное значение в Юникоде.
-
Проблемы с хэшированием паролей в IPB 3.4.6
Пардон, глазами недоучки не смог разглядеть ответа. Спасибо за пояснение, сегодня буду эксперементировать.
-
Проблемы с хэшированием паролей в IPB 3.4.6
Я благодарен Вам за ответы, но хотелось бы самому решать, что нужно, а что нет) Полностью отдаю себе отчет в том, какими могут быть последствия экспериментов с безопасностью. Однако меня все же интересует решение проблемы именно тем способом, который я предложил.
-
Проблемы с хэшированием паролей в IPB 3.4.6
У меня есть небольшой игровой проект. Регистрация пользователей происходит на форуме. При входе в игру через игровой клиент происходит обращение к базе. Клиент проверяет пароль по упомянутой мною формуле. Однако если у пользователя в пароле есть восклицательный знак, то проверку пройти не удается. В общем, хотелось узнать, какие еще символы заменяются в пароле на другие, и как это можно отключить.
-
Проблемы с хэшированием паролей в IPB 3.4.6
Приветствую, читатель. При регистрации в 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. Понятное дело, что метод шифрования не меняется. Очевидно, что из передаваемой строки символ восклицательного знака или изымается, или заменяется на какой-либо другой. Поэтому возникает вопрос: как с этим бороться? Спасибо.