Перейти к содержанию

Doctor911

Пользователи
  • Постов

    5
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Doctor911

  1. Нашел строки, отвечающие за подмену символов при регистрации. Расположен этот отрывок в файле adminsourcesbasecore.php

            $val = str_replace( "&"                , "&"         , $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.  

    1. Находите класс IPSText

    adminsourcesbasecore.php

    2. Находите метод parseCleanValue

     

     

     

    Я Вам дал решение, основанное на Вашем коде. Что в нем не так?

     

    Пардон, глазами недоучки не смог разглядеть ответа. Спасибо за пояснение, сегодня буду эксперементировать.

  3. Не нужно это отключать.

    $pass = IPSText::parseCleanValue('qwe!rty');    
    $salt = 'a"J9T';
    $cryptPass = md5( md5($salt) . md5( $pass ) );
    

    Я благодарен Вам за ответы, но хотелось бы самому решать, что нужно, а что нет)

    Полностью отдаю себе отчет в том, какими могут быть последствия экспериментов с безопасностью. Однако меня все же интересует решение проблемы именно тем способом, который я предложил.

  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.

     

    Понятное дело, что метод шифрования не меняется. Очевидно, что из передаваемой строки символ восклицательного знака или изымается, или заменяется на какой-либо другой.

    Поэтому возникает вопрос: как с этим бороться?

     

    Спасибо.

×
×
  • Создать...