Перейти к контенту
  • 0

Что это?! Взлом?! Баг?!


Вопрос

Картинка

 

Все дружно смотрим на картинку, нервно представляем, как это происходит на вашем личном форуме (я вот, как видите, уже испытал, кучу времени убил на исправление этого косяка)....

 

По порядку. У меня русский модифицированный IPB 1.3 Final с заплатками до 1.3.1. Флуд-контроль для гостей включён 100% (только что убедился, он вообще для всех включён), время на 20 секунд. Теперь считаем кол-во постов, отправленных в 19:29... 11... Разумеется, флуд-контроль не сработал - ежу ясно. IP-адрес у этого чела (бота?) один и тот-же! Я поставил на него бан, но уже поздно,он сам ушёл раньше, а я всё чистил форум....

 

Ну, у кого какие соображения? Как фиксить? Это дыра или флуд-контроль глючит конкретно? Мне нафик не нужна такая канитель, если так продолжится дальше - это будет полный... хана.... :D

 

ЗЫ. В темах было просто "Test", больше ничего....

 

ЗЫ2. Сам мой форум в профиле, если что.... ;)

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Fletch.

что-то упорно народ.ру не хочет показивать картинку.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Fletch.

запрети гостям постить и создавать теми. только просматривать.

включи при регистрации проверку валидности мьіла.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Sanjak

Это не выход! Я не хочу лишать гостей права голоса!

 

Народ, мы тут с Остапом покопались малость. В общем - это ДЫРА, БАГ, как хотите называйте, но она есть у ВСЕХ! Проблема точно у тех, у кого разрешено постить гостям! для них флуд-контроль НЕ РАБОТАЕТ! Я только что зафлудил себе и Остапу форумы - работает на "ура"... Если парочка дебилов с широкими инет-каналами накинется на ваш (и наш) форум - хана, никакие модеры не справятся!!! Остап думает над проблемой, а я вот пишу эти строки.... Срочно нужно искать причину проблемы и заплатку, т.е. это тянет уже явно на патчик для всех версий форума (у меня пропатчено до 1.3.1)... Если Остап надумает что-нить, выложит здесь свои умозаключения :D

Добавлено в [mergetime]1083796219[/mergetime]

Sanjak

валидность мыла включено, но гостям запрещать постить - не выход... для того они и гости....

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Остап

Мдя, либо запрещать гостям постить (эффективно, но не то это...), либо сидеть и молиться, чтобы "шутники" не напали на форум, либо искать альтернативные методы....

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Остап

На Осзоне как-то решили эту проблему, хотя, там Ikonboard, но, главное, принцип действия знать,а там уж думать над реализацией надо ;)

 

ЗЫ. Любопытно, у IPB 2.0 такие же глюки будут? :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Fletch.

да ты прав. Гостям пофик.

В принципе можно решить проблему так: в sessions запихать время последнего поста гостя. И его сравнивать. Дёшево и сердито :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

1. Выполняем команды

ALTER TABLE ibf_sessions ADD last_post int(10) default NULL
ALTER TABLE ibf_sessions ADD INDEX (ip_address)

 

2. В файлах post_new_post, post_poll, post_q_reply_post, post_reply_post

найти кусок кода

 	if ($ibforums->member['id'])
  {
  	if ($class->forum['inc_postcount'])
  	{
    // Increment the users post count
    
    $pcount = "posts=posts+1, ";
    
  	}

Находим закрывающую скобку от начала кода "if ($ibforums->member['id']) {" (внимание! пИсать надо не после этого кода, а после закрывающей скобки от этой)

и после неё пишем:

// Song * additional flood control

  $DB->query("UPDATE ibf_sessions SET last_post='".time()."' WHERE ip_address='".$ibforums->input['IP_ADDRESS']."'");
// Song

 

3. Файл post.php

Находим

        //--------------------------------------
        // Are we allowed to post at all?
        //--------------------------------------

        if ($ibforums->member['id'])
        {

 

Далее, ниже находим

 

       	if ( $ibforums->input['CODE'] != "08" and $ibforums->input['CODE'] != "09" and 
             $ibforums->input['CODE'] != "14" and $ibforums->input['CODE'] != "15" )

Удаляем этот кусок (от начала этих строк и до закрывающей скобки этого куска).

 

Перемещаемся снова вверх на код

        //--------------------------------------
        // Are we allowed to post at all?
        //--------------------------------------

        if ($ibforums->member['id'])

и перед ним пишем:

// Song * Additional flood check

       	if ( $ibforums->input['CODE'] != "08" and $ibforums->input['CODE'] != "09" and 
             $ibforums->input['CODE'] != "14" and $ibforums->input['CODE'] != "15" )
  if ( $ibforums->vars['flood_control'] > 0 )
          if ( $ibforums->member['id'] ) 
    {
         // Flood check..

  if ($ibforums->member['g_avoid_flood'] != 1)
  {
  	if ( time() - $ibforums->member['last_post'] < $ibforums->vars['flood_control'] )
  	{
    $std->Error( array( 'LEVEL' => 1, 'MSG' => 'flood_control' , 'EXTRA' => $ibforums->vars['flood_control'] ) );
  	}
  }

    } else
    {
          // Additional flood check
      $DB->query("SELECT last_post FROM ibf_sessions WHERE ip_address='".$ibforums->input['IP_ADDRESS']."' LIMIT 1");
      $last_post = $DB->fetch_row();

      if ($last_post['last_post'])
   {
     if ( ( time() - $last_post['last_post'] ) < $ibforums->vars['flood_control'] )
       {
    $std->Error( array( 'LEVEL' => 1, 'MSG' => 'flood_control' , 'EXTRA' => $ibforums->vars['flood_control'] ) );
       }
   }

    }

// Song * Additional flood check

 

Сорри, что сумбурно объяснил, просто у меня форум очень модифицирован и трудно на что-то ссылаться как это обычно делается (найти, заменить и прочее, поэтому если на php смотрите как баран на новые ворота, лучше не делайте, запутаетесь в скобках). Кому не лень, переделайте в нормальный хак, авторство не забудьте естесно :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Song Есть вопросец, чел ... Что есть РаннигТайм в сэшшнс ??? МОЖЕТ это время последнего ДЕЙСТВИЯ ??? Тады не нада будет теэбл ломать, можно под ласт_пост использовать раннинг_тайм ...
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Кажется получилось ... Проверяем тут Если таки да - вечером приду с работы вложу код ... Всё гораздо проще ... ВРОДЕ ... :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Остап

running_time - это время выполнения последнего действия. А оно не обязательно означает пост. А например, начало изменения анкетных данных. Тебе ещё одного поля жалко?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Song Я понимаю ... Не пипчет ... За 20-30 сек трудно перейти с редакции профиля или прихода в тему ( ничего не прочитав ) в состояние поста ... Короче - я таблицы трогать не буду, к тому же всего один else в одном файле добавить ... Намного проще народу ... ИМХО, только лишь ИМХО ... :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Song Наверное - ты правее ... Слишком у меня серьёзный контроль получился ... Токо
ALTER TABLE ibf_sessions ADD INDEX (ip_address)

Разве не лишнее ??? В сешшнс уже есть айпи адресс ...

Изменено пользователем Остап
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Короче всё пашет - Сонг крут !
ALTER TABLE ibf_sessions ADD INDEX (ip_address)
Не делать, да ион у вас не пройдёт, потому что уже такое поле есть
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Остап

Это команда не добавляет поле, а добавляет индекс по полю! А индекса там такого нет :D

Поэтому 2ALL: не слушайте Остапа, он вас плохому научит ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Вообщем-то не обязательно если у тебя на форуме 5 человек одновременно.

Да надо-надо. Просто Остап на запросы не смотрит, а сразу говорит, вот всех и попутал.

Добавлено в [mergetime]1083997535[/mergetime]

Я вот чего подумал: прикол будет если будут люди с одинаковым IP :D

надо бы ещё по session_id искать..

Ссылка на комментарий
Поделиться на других сайтах

  • 0

:D поискать-то можно но сверять не с чем. Это ж гости.

Вообщем делаем вывод: если у гостей одинаковый ИП - это их проблема =)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

По поводу ip немного не правы...

К примеру у меня пров. дает всем один ip - ip сервера. И у всех юзеров один ip прова .

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.