Jump to content

Doctor911

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