Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[3.3.4] Дырка позволяющая постить гостям в любой подфорум

Опубликовано:

В 3.3.4 у меня для некоторых подфорумов разрешено создавать и отвечать гостям. Однако некоторые индивидумы нашли способ спамить в другие подфорумы, даже если гостям не разрешено постить в них. ПОтом нашли как они это делают - прямой запрос к РНР. Подскажите, кто сталкивался с данной проблемой? Как закрыть этот баг?

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

Опубликовано:

Может гдето в коде забыли проверку добавить. Покажите как выглядит прямой запрос в php

Опубликовано:
  • Автор

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

Опубликовано:

Да, уныло там получилось. Несмотря на обилие проверок, прошляпили момент с fid, либо не предусмотрели логику в classPost: setTopicId и setTopicData.

 

Фикс http://ipbskins.ru/forum/topic12462.html#entry81858

 

И напишите багрепорт в IPS.

Опубликовано:

В 3.4.5 такой же баг или нет?

Опубликовано:

Как в 3.4.5 не знаю, но в 3.4.4 похоже тоже самое.

 

Решить глобально проблему можно следующим образом:

 

Открыть admin\applications\forums\sources\classes\post\classPost.php

Найти

		$topic = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'topics', 'where' => 'tid=' . $this->getTopicID() ) );

заменить на

		$topic = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'topics', 'where' => 'tid=' . $this->getTopicID() .' AND forum_id='.$this->getForumID() ) );

Опубликовано:

В 3.1.4 такого бага не нашёл. Проверил.

Опубликовано:

В 3.1.4 такого бага не нашёл. Проверил.

Да, в 3.1.4 нету, ибо они добавили тупую проверку /* Fetch topic if topic ID exists */ в replySetUp.

Опубликовано:

Как в 3.4.5 не знаю, но в 3.4.4 похоже тоже самое.

 

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

Опубликовано:

Исправил в 3.4.5.

Сделайте лучше новое исправление. Имхо, это будет продолжении логики от 3.1

Опубликовано:

Да, я уже заметил, что правка другая. Поменял на

$topic = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'topics', 'where' => 'tid=' . $this->getTopicID() .' AND forum_id='.$this->getForumID() ) );

 

Не совсем представляю, насколько глобален этот баг. Что можно было бы написать в баг-трекере?

Опубликовано:

Напишите, что пользователь, зная айди темы, может в ней отвечать даже закрытых для него разделах. Они поймут :)

Опубликовано:

Главное, чтобы не взбрыкнули (они любят тянуть резину) и выпустили патч, тогда хакеры перехватят инициативу. Попробую отписать.

Опубликовано:
Опубликовано:

Users may post to topics they have no permission for posting to .

If forum or topic is hidden then user gets a error message.

Хм... это разве не одно и тоже? Ладно темы, но форумы разве можно запретить кроме через маски доступа?..

 

А баг не совсем критичный.

Опубликовано:

А это только для форума исправление или для аддонов тоже?

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.