Ошибка БД на форуме Invision Power Board (IPB), вследствии чего форум начал тормозить довольно прилично. Оказалась повреждена таблица ibf_profile_portal_views, и необходимо сделать проверку таблиц. На форуме это отображается следующим образом: нельзя войти в профиль пользователя:
Также на форуме не отображается статистика посещений:
Идем в Админцентр IPBoard смотрим свойства системы:
Идем в раздел: Поддержка > Диагностика > Состояние системы > Обзор системы > Проверка структуры базы данных.
Находим ошибку: ibf_profile_portal_views. Нажмите здесь для исправления таблицы или вы можете выполнить следующие запросы вручную.
- ALTER TABLE ibf_profile_portal_views ADD views_member_id int(10) NOT NULL default "0".
Внимание: Найдены ошибки. В базе данных обнаружены ошибки. И для их исправления нажимаем на ссылку: Хотите попытаться исправить все в автоматическом режиме?
И напротив таблицы ibf_profile_portal_views (профиль и количество просмотров) получаем зеленый флаг:
Но после выхода и входа в админку, ошибка появляется снова. Поэтому идем в Поддержка > Управление SQL > Инструменты > Инструменты для управления SQL.
И делаем клик на таблице ibf_profile_portal_views.
Читаем информацию. Результаты ручного запроса: Can"t find file: "ibf_profile_portal_views" (errno: 2). Далее, вбиваем в поле Выполнить:
CREATE TABLE ibf_profile_portal_views (
views_member_id int(10) NOT NULL default "0"
);
И нажимаем на кнопку: Выполнить новый запрос.
Ошибка сменилась на: Table "ibf_profile_portal_views" already exists. Т.е. не дает создать новую таблицу, так как она уже существует.
Пробуем следующий вариант: repair table ibf_profile_portal_views;
Эта же ошибка работы с базой выдается при попытке удалить пользователя, через админцентр (хотя создать пользователя это не мешает, так же как перемещать его по группам).
Функция этой таблицы следующая - там скапливаются просмотры профиля пользователя, потом, они считаются и обновляются в другой таблице, а данная таблица очищается.
Для работы с БД, также можно использовать либо Sypex Dumper, либо phpMyAdmin веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. PHPMyAdmin позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.
Invision Power Board (также применяются сокращения: IPB, IP.Board) представляет собой одно из популярнейших в мире решений для создания форумов. Данное программое обеспечение разрабатывается фирмой Invision Power Services, Inc.
Система создана с применением технологий HTML, PHP, JS, AJAX, в качестве сервера базы данных использует MySQL (дополнительно, имеется поддержка других серверов баз данных, таких как Microsoft SQL Server и Oracle). IPB является платным программным обеспечением.
Несмотря на то, что Invision Power Board является платным продуктом, существует большое количество сообществ, занимающиеся его поддержкой и модификацией. Большая часть модификаций и стилей оформления, разрабатываемые данными сообществами, бесплатны и свободны для скачивания. Крупнейшим русским сообществом является IBResource.ru.
Версия форумов IPB 1.3 является самой последней бесплатно распространяемой версией движка и до сих пор разрешена IPS для использования, хотя уже не поддерживается разработчиками и доступ к скачиванию на официальном ресурсе уже прекращен. Не обращая внимание на устарелость данной версии форума и наличия в ней известных дыр в безопасности, многие люди до сих пор пользуются ей и не выражают никакого желания обновляться. IPS продолжала выпускать обновления безопасности до объявления выхода в разработку версии 2.1 в 2005 году, после чего поддержку данной версии форума прекратила. На некоторых сайтах даже сейчас можно увидеть ссылки на выпускаемые ими обновления безопасности, равно как и обновления, позволяющие работать скрипту форума на PHP5. Эти обновления не поддерживаются IPS. Версия 1.3.1 была условно-бесплатной на период тестирования, который может длиться сколь угодно долго. После этой версии Invision Power Services стали выпускать свои продукты под коммерческой лицензией.
Преимущества
- Установка всего за 3 минуты . Компоненты автоматической инсталляции дают возможность практически любому пользователю установить форум всего за несколько минут. Процесс не требует специальных знаний: система сама выполнит все операции, запросив у вас лишь необходимые данные. Да, к чему лишние разговоры, - IPB-лицензия даёт каждому владельцу право заказать бесплатную установку своего форума.
- Техподдержка на русском языке. Обладателям лицензии IP.Board доступна техническая поддержка на русском языке. Причем специалисты службы не просто говорят на вашем родном языке, они также являются «родными» разработчиками форума. А значит, вам не прийдется объяснять им симптомы проблем, а также возможные пути разрешения. Идеальное владение предметом позволяет производить все работы с форумом, не тратя время и силы клиента.
- Социальная направленность. Сделать форум полноценной средой для общения, дать пользователям дополнительные возможности для знакомства и установления связей - этому способствуют атрибуты социального взаимодействия участников форума. Пользователи IP.Board могут легко обмениваться различным контентом между собой, создавать персональные анкеты, заводить друзей, добавляя их в свой круг.
- Удобный интерфейс Web 2.0. Хорошего никогда не бывает много. Для ещё большего удобства в системе IPB используются современные технологии Web 2.0. Благодаря чему, пользоваться необходимыми базовыми функциями форума легко и интуитивно просто. А раз просто, значит, участники избавлены от занудной технической «прелюдии» к общению.
- Гибкость. IPB обладает широкими возможностями для персонализации вашего сообщества и настройки индивидуальных опций. Гибкость системы позволяет без больших трудозатрат осуществлять интеграцию форума со сторонними решениями, а также изменять любой элемент интерфейса (дизайн, добавление новых функций).
- Лояльность к бренду. «Потребитель не дурак, он - твоя жена». Интересный форум, продуманная организация сообщества - всё это работает на имидж компании, повышает лояльность клиентов к марке. Пользователи обязательно оценят комфорт созданной среды для общения: возможность обсуждения марки с другими людьми, обмен мнениями, отклик и взаимодействие с руководством самой компании.
- Снижение расходов. Сообщество форума выполняет роль онлайн-консультации 24 часа в сутки, ощутимо сокращая количество обращений в вашу службу техподдержки. Пользователю психологически намного проще и легче обратиться за помощью на форум: дружеское участие, мнение и советы независимых специалистов - в результате общения не только решаются все проблемы, но и снимаются негативные эмоции из-за возникших затруднений.
- Маркетинговые исследования. Система IP.Board позволяет использовать форум как инструмент для маркетинговых исследований. Изучение оценок и мнений ваших клиентов, проведение опросов, тестирование - широкие технические возможности форума позволяют применять различные схемы исследований.
- Многозадачность. Гибкость настройки системы позволяет использовать IP.Board для достижения различных целей. Помимо традиционного инструмента коммуникаций, некоторые компании организовали на базе форума систему управления проектами. IP.Board служит как внутренней, так и внешней системой работы с клиентами. За счёт возможности глубокой и индивидуальной настройки прав доступа можно адаптировать работу форума даже к самыми сложным и специфическим задачам.
- Адекватность ценообразования. Условия приобретения программного продукта IP.Board и разработанный тарифный план позволяют найти оптимальный вариант для решения поставленных перед форумом задач. Вы платите за то, что вы действительно используете, что вам действительно необходимо.
- Дополнительные модули. Вы можете расширять функционал системы IP.Board с помощью дополнительных официальных приложений (модуль галереи, блога, файлового архива). Готовые решения избавляют вас от самостоятельных разработок и доработок функционала. Дополнительные модули полностью совместимы с системой и используют единое пространство сообщества, что позволяет производить их установку в один клик, не требуя специальных знаний и навыков. Приложения также поддерживают выход новых версий, а их обслуживание входит в общий пакет услуг по техподдержке форума.
- Продуманное управление форумом. Эффективности любого сообщества способствует грамотное «дирижирование». Встроенные в IP.Board инструменты управления позволяют создавать гибкую систему администрирования и модерирования с нужным разграничением прав. Управление форумом включает широкие возможности: от контроля за контентом до создания центра диагностики, который позволяет вести обслуживание форума, следить за статистикой и проверять систему на возможные ошибки.
Возможности
- Простая, интуитивная и быстрая установка
- Наличие драйверов для различных типов баз данных: MSSQL, Oracle, PostgreSQL
- Полная готовность работы сразу после установки
- Группы и Мульти-группы для пользователей
- Современный профиль пользователя
- Друзья
act
. Так вот act
action
", что означает "действие". (далее в тексте вместо act
будет говориться action
)
action
act=Online
или act=UserCP
act=idx
Сначала найдите такой код:
if (! isset($choice[ $ibforums->input["act"] ]))
{
$ibforums-> idx
idx
на portal
ИЛИ
на home
$choice = array("idx" => "Boards",
"SC" => "Boards",
"SF" => "Forums",
"SR" => "Forums",
"ST" => "Topics",
"Login" => "Login",
"Post" => "Post",
"Poll" => "lib/add_poll",
"Reg" => "Register",
"Online" => "Online",
"Members" => "Memberlist",
"Help" => "Help",
"Search" => "Search",
"Mod" => "Moderate",
"Print" => "misc/print_page",
"Forward" => "misc/forward_page",
"Mail" => "misc/contact_member",
"Invite" => "misc/contact_member",
"ICQ" => "misc/contact_member",
"AOL" => "misc/contact_member",
"YAHOO" => "misc/contact_member",
"MSN" => "misc/contact_member",
"report" => "misc/contact_member",
"chat" => "misc/contact_member",
"integ" => "misc/contact_member",
"Msg" => "Messenger",
"UserCP" => "Usercp",
"Profile" => "Profile",
"Track" => "misc/tracker",
"Stats" => "misc/stats",
"Attach" => "misc/attach",
"ib3" => "misc/ib3",
"legends" => "misc/legends",
"modcp" => "mod_cp",
"calendar" => "calendar",
"buddy" => "browsebuddy",
"boardrules" => "misc/contact_member",
"mmod" => "misc/multi_moderate",
"warn" => "misc/warn",
"home" => "dynamiclite/csite",
"module" => action
"warn" => "misc/warn",
, то это значит для act=warn
sources
sources
lang
и skin
. Находим соответственно:
$ibforums->lang = $std->load_words($ibforums->lang, "lang_post" , $ibforums->lang_id);
$ibforums->lang = $std->load_words($ibforums->lang, "lang_ucp" , $ibforums->lang_id);
и
$this->html = $std-> lang_post.php
и lang_ucp.php
skin_ucp.php
А вот что с чем связано:
"idx" =>
"SC" =>
"SF" =>
"SR" =>
"ST" =>
"Login" =>
"Post" =>
"Poll" =>
"Reg" =>
"Online" =>
"Members" =>
"Help" =>
"Search" =>
"Mod" =>
"Print" =>
"Forward" =>
"Mail" =>
"Invite" =>
"ICQ" => Отсылка сообщения на ICQ
"AOL" => Отсылка сообщения на AOL
"YAHOO" => Отсылка сообщения на YAHOO
"MSN" => Отсылка сообщения на MSN
"report" =>
"chat" =>
"integ" =>
"Msg" =>
"UserCP" =>
"Profile" =>
"Track" => Подписка на тему/форум
"Stats" =>
"Attach" =>
"ib3" =>
"legends" => Смайлики, помощь по bbcode
"modcp" =>
"calendar" =>
"buddy" =>
"boardrules" =>
"mmod" =>
"warn" =>
"home" =>
"module" =>
act
У вас могут возникнуть вопрос, а что же такое: "idx" => "Boards",
"SC" => "Boards",
"SF" => "Forums",
"SR" => "Forums",
"ST" => "Topics",
if ($ibforums->input["showforum"] != "")
{
$ibforums->input["act"] = "SF";
$ibforums->input["f"] = intval($ibforums->input["showforum"]);
}
else if ($ibforums->input["showtopic"] != "")
{
$ibforums->input["act"] = "ST";
$ibforums->input["t"] = intval($ibforums->input["showtopic"]);
// Grab and cache the topic now as we need the "f" attr for
// the skins...
$DB->query("SELECT t.*, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html,
f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms,
f.show_rules, f.rules_text, f.rules_title,
c.name as cat_name, c.id as cat_id
FROM ibf_topics t, ibf_forums f , ibf_categories c
WHERE t.tid=".$ibforums->input["t"]." and f.id = t.forum_id and f.category=c.id");
$ibforums->topic_cache = $DB->fetch_row();
$ibforums->input["f"] = $ibforums->topic_cache["forum_id"];
}
else if ($ibforums->input["showuser"] != "")
{
$ibforums->input["act"] = "Profile";
$ibforums->input["MID"] = intval($ibforums->input["showuser"]);
}
Структура и пути в IPB
Форумы IBResource
В этой теме нет ответов
IBResource
- Город: 99|rus
У многих наверняка возникал вопрос:
"Почему в IPB столько файлов? Ведь пути всегда идут к одному файлу index.php, а меняются лишь параметры."
Так вот эта краткая статья по файлам в IPB должна помочь вам лучше разбираться в IPB . Что где искать. Где что изменять.
Почти все страницы в IPB имеют в адресе параметр act
. Так вот act
- это сокращение от английского слова "action
", что означает "действие". (далее в тексте вместо act
будет говориться action
)
Так вот эта основная состовляющая деления по файлам. Почти каждому значению action соответствует свой файл с функциями + свой файл с шаблонами + свой языковой файл. Почему почти? Потому что бывают мелкие действия, естесственно на разных значениях action
, но они объединяются все в один файл с функциями + также объединенный языковой файл + также объединенный файл с шаблонами. Например есть крупные act=Online
или act=UserCP
. У них у каждого свои служебные файлы с функциями и т.д.
Итак как понять какой action относиться к каким файлам?
Для этого заходим в index.php. Там все расписано. Сразу сообщю, что index.php?act=idx
является адресом главной странице форума где представлены все категории и форумы.
Сначала найдите такой код:
if (! isset($choice[ $ibforums->input["act"] ]))
{
$ibforums->input["act"] = "idx";
}
Это запись означает, что если параметр action не указан, то он по умолчанию равен idx
. Так вот почему при запуске форума просто по адресу открывается главная страница форума со списком форумов . Изменив здесь значение idx
на portal
(для форума где стоит IBF Portal 3.2 или 4.0) ИЛИ
на home
(если у вас 1.2 и стоит портал IPDynamic Lite), то вы получите, что у вас по умолчанию будет загружаться не форум а портал.
А теперь поднимитесь чуть выше и найдите примерно такой код:
$choice = array("idx" => "Boards",
"SC" => "Boards",
"SF" => "Forums",
"SR" => "Forums",
"ST" => "Topics",
"Login" => "Login",
"Post" => "Post",
"Poll" => "lib/add_poll",
"Reg" => "Register",
"Online" => "Online",
"Members" => "Memberlist",
"Help" => "Help",
"Search" => "Search",
"Mod" => "Moderate",
"Print" => "misc/print_page",
"Forward" => "misc/forward_page",
"Mail" => "misc/contact_member",
"Invite" => "misc/contact_member",
"ICQ" => "misc/contact_member",
"AOL" => "misc/contact_member",
"YAHOO" => "misc/contact_member",
"MSN" => "misc/contact_member",
"report" => "misc/contact_member",
"chat" => "misc/contact_member",
"integ" => "misc/contact_member",
"Msg" => "Messenger",
"UserCP" => "Usercp",
"Profile" => "Profile",
"Track" => "misc/tracker",
"Stats" => "misc/stats",
"Attach" => "misc/attach",
"ib3" => "misc/ib3",
"legends" => "misc/legends",
"modcp" => "mod_cp",
"calendar" => "calendar",
"buddy" => "browsebuddy",
"boardrules" => "misc/contact_member",
"mmod" => "misc/multi_moderate",
"warn" => "misc/warn",
"home" => "dynamiclite/csite",
"module" => "modules",);
А вот и список всех значений action
(слева) и список имен файлов (без расширения php) к чему они относятся (справа). Если строка такая - "warn" => "misc/warn",
, то это значит для act=warn
служебный файл расположен по адресу
Почему в строке не указана директория sources
, а я ее указал? Потому что все служебные файлы (почти ) находятся в папке sources
(в переводе с английского - исходники).
Как узнать, где находятся языковые файлы и шаблоны данного файла?
Просто. Заходим в файл, например выбрали UserCP.php. Там ищем слова lang
и skin
. Находим соответственно:
$ibforums->lang = $std->load_words($ibforums->lang, "lang_post" , $ibforums->lang_id);
$ibforums->lang = $std->load_words($ibforums->lang, "lang_ucp" , $ibforums->lang_id);
и
$this->html = $std->load_template("skin_ucp");
Из чего не сложно понять, что языковые файлы используются 2 штуки lang_post.php
и lang_ucp.php
. А файл с шаблонами используется только один skin_ucp.php
А вот что с чем связано:
"idx" => index - Главная страница форума
"SC" => Show Category - Отображает список форумов выбранной категории
"SF" => Show Forum - Показывает список тем выбранного форума!
"SR" => Show Rules - Показывает правила выбранного форума (их можно создавать для каждого форума свои)
"ST" => Show Topic - Показывает выбранную тему (список всех сообщений выбранной темы)
"Login" => Обслуживает авторизацию (вход в форум под своей учетной записью)
"Post" => Обслуживает публикацию сообщений, создание тем, опросов
"Poll" => Обслуживает добавление голосов к опросу
"Reg" => Регистрация, восстановление пароля...
"Online" => Список активных пользователей (тех кто в онлайне)
"Members" => Список всех пользователей, различная сортировка...
"Help" => Обслуживание файлов помощи (FAQ, просмотр, сортировка)
"Search" => Поиск по форуму. Расширенный поиск. Просмотр новых сообщений со времени последнего визита, активные темы.
"Mod" => Модерирование. Действия модератора. Перенос тем. Разделение и т.д.
"Print" => Вид темы для печати, сохранение темы в HTML, Ms Word...
"Forward" => Отсылка ссылки на тему другу на e-mail.
"Mail" => Написание и отправка письма пользователю на e-mail.
"Invite" => Пока функции такой нет. Но разработчики заранее уже заготовки делают себе
"ICQ" => Отсылка сообщения на ICQ
"AOL" => Отсылка сообщения на AOL
"YAHOO" => Отсылка сообщения на YAHOO
"MSN" => Отсылка сообщения на MSN
"report" => Сообщить модератору (обслуживание ссылки на доклад модератору на e-mail о сообщении)
"chat" => Модуль чата. Invision Power Chat платный чат. Поэтому его нету в наборе
"integ" => Отсылка сообщения на Integrity Messenger
"Msg" => Обслуживание Личного Ящика. Прием отсылка и другие действия с PM"ками (сообщениями в Приват)
"UserCP" => Большой скрипт работы с "Профилем". Это и управление подпиской и настройки форума и т.д...
"Profile" => Просмотр профиля пользователя...
"Track" => Подписка на тему/форум
"Stats" => 10 лучших авторов, 10 лучших авторов сегодня и ссылка на состав Администрации
"Attach" => Скачивание присоединенного файла к сообщению (аттача)
"ib3" => Модуль входа в форум для Ikonboard 3. Связано с конвертированием из IkonBoard3
"legends" => Смайлики, помощь по bbcode
"modcp" => Панель управления модератора. И все что с ней связано
"calendar" => Календарь. публикация, изменение событий календаря...
"buddy" => Контакт-лист пользователя. Добавление пользователя в контакты и т.д.
"boardrules" => Общие правила всего форума. Из просмотр.
"mmod" => Мультимодерация. Создание общих правил для модерирования форумов
"warn" => Система рэйтингов/предупреждений
"home" => Просмотр портала IPDynamic Lite. Вот по этой ссылке ясно почему act=home это портал
"module" => Дополнительные модули синхронизации. Появились только в 1.2
Так что если вы что-то хотите изменить загляните в адресную строку браузера, посмотрите, чему равен параметр act , и вы сразу будете знать где искать. А место, что вы ищете можете найти по какому-нибудь тексту, который не динамический (не изменяется). А раз текст статичный, значит он в языковых файлах наверняка есть. Значит найдя его через поиск в языковых файлах вы сможете увидеть какая переменная соответствует данной записи и уже искать нужное место по имени переменной, что как правило приведет вас в шаблоны с уже знакомым HTML языком Там-то имея базовые навыки английского (как правило переменные называются простыми понятными словами на английском языке) вы сможете там найти нужное и понять уже без языковых переводов что есть что.
У вас могут возникнуть вопрос, а что же такое: "idx" => "Boards",
"SC" => "Boards",
"SF" => "Forums",
"SR" => "Forums",
"ST" => "Topics",
idx - index - главная страница форума
SC - Show Category - просмотр выбранной категории (список форумов выбранной категории)
SF - Show Forum - Просмотр форума (список тем выбранного форума)
SR - Show Rules - Просмотр правил форума (их можно добавлять к каждому форуму свои через AdminCP)
ST - Show Topic - Просмотр темы (список сообщений выбранной темы)
Также в последней версии 1.2 ввели несколько более сокращенных видов ссылок, которые имитирует эти обычные. Это
index.php?showforum=3 - эта запись идентична index.php?act=SF&f=3
index.php?showtopic=33234 - эта запись идентична index.php?act=ST&f=номер_форума&t=33234
index.php?showuser=343 - эта запись идентична index.php?act=Profile&CODE=03&MID=343
Эти три сокращения реализуются кодом, который записан в index.php:
if ($ibforums->input["showforum"] != "")
{
$ibforums->input["act"] = "SF";
$ibforums->input["f"] = intval($ibforums->input["showforum"]);
}
else if ($ibforums->input["showtopic"] != "")
{
$ibforums->input["act"] = "ST";
$ibforums->input["t"] = intval($ibforums->input["showtopic"]);
// Grab and cache the topic now as we need the "f" attr for
// the skins...
$DB->query("SELECT t.*, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html,
f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms,
f.show_rules, f.rules_text, f.rules_title,
c.name as cat_name, c.id as cat_id
FROM ibf_topics t, ibf_forums f , ibf_categories c
WHERE t.tid=".$ibforums->input["t"]." and f.id = t.forum_id and f.category=c.id");
$ibforums->topic_cache = $DB->fetch_row();
$ibforums->input["f"] = $ibforums->topic_cache["forum_id"];
}
else if ($ibforums->input["showuser"] != "")
{
$ibforums->input["act"] = "Profile";
$ibforums->input["MID"] = intval($ibforums->input["showuser"]);
}
А вообще все, что вы хотите изменить, можно найти поиском в файлах форума. Поэтому всегда держите копию всех файлов форума у себя на жестком диске. Ведь поиск в файлах на сервере через ftp попросту невозможен. Но это уже тема для другой статьи. Так что The End. Удачи
Все комментарии и вопросы по статье пожалуйста в ! Если будут изменения или какие-либо важные вопросы и ответы, я их добавлю тут в тему!
Есть небольшая уязвимость в форумном движке IPB. Можно потроллить админа и заодно убить его форум на несколько дней (проверено лично на двух форумах).
Поздравляем участника конкурса
Этот текст был прислан на конкурс авторов, который мы запустили весной. Мы разобрались с большим количеством пришедших материалов, подвели итоги и наградили победителей. Автор этой заметки получил приз - трехмесячную подписку на «Хакер». Поздравляем!
Разберемся по шагам, как это работает.
- Сначала нужно зарегистрироваться на форуме, чтобы иметь возможность постить.
- После регистрации создать «мусорную» тему там, куда модераторы почти не заглядывают, либо оставить пост в одной из таких тем. Содержание поста или темы должно быть огромного размера. Некоторые админы допускают ошибки при конфигурировании сервера, позволяя пользователям отправлять посты с нелимитированной длиной текста. Лично я хешировал слово DDoS в SHA-512 и копировал хеш в форму отправки поста до тех пор, пока браузер не повисал на несколько секунд от количества вставляемого на страницу текста.
- Отправляем новую тему или пост. Движок реализован наплевательски, и длинные посты не сокращаются с возможностью их расширить по клику на кнопку. А выводом таких постов занимается PHP, а не клиентский JS. Как итог - получаем огроменную страницу с несколькими миллионами символов, которые грузятся синхронно с сервера.
- Начинаем DDoS-атаку на тему с огромным постом. Поскольку все запросы идут напрямую к PHP, а от него к БД, сайт очень быстро сляжет с ошибкой 500 Internal Server Error, а потом и с 504 Gateway Timeout (поскольку база данных даже на VPS не сможет так быстро отдавать такой огромный пост, что уж говорить о Shared-хостинге) и встать сможет еще не скоро, ведь запросы к БД будут висеть и ждать ответа от сервера и базы данных.
- Скрыть атаку от особо глупых модераторов можно, учудив финт ушами. В IPB есть модуль «Активность» (Discover в английской версии движка). Это такая лента, которая хранит историю последних постов. Так вот, чтобы отвлечь внимание модераторов (которые могут задетектить тему, стереть ее и забанить аккаунт), нужно сразу же после отправки мусорного поста начать флуд на страницу с активностью. Увидев логи, сисадмин будет думать, что атака идет на ленту сообщений и не сможет обнаружить корень проблемы - созданную нами тему, которая, кстати, тоже целиком в несвернутом виде будет висеть на странице. Единственное, что он сможет сделать, - закрыть ленту от незарегистрированных пользователей. Да и то это сомнительное решение, от которого страдает юзабилити.
- Несколько часов интенсивной DDoS-атаки на мусорную страницу, и буквально через пару суток (максимум - недель) БД форума упадет навсегда. Нет, не просто упадет, а будет сломана без возможности восстановления. Не уверен, с чем это связано и почему это происходит, но это происходит. Таким образом, можно не только легко в пару кликов положить форум даже на Dedicated-сервере, но и уничтожить его базу данных, которую без бэкапа восстановить будет крайне затруднительно.
А еще можно забить место на диске логами. Обычно арендуют VPS с SSD-диском на 10–20 Гбайт, а картинки на форум разрешают загружать только со сторонних ресурсов. Так вот, забить логи очень просто - нужно использовать в названии темы тот же длинный хеш. Слегка увеличить эффект можно также при помощи рефереров, вставляя в них тот же хеш.
Вот такой интересный способ заставить владельца форума IPB задуматься о переезде на другой движок.
Конкурс продолжается
Мы решили продлить конкурс и превратить его в постоянную акцию. Прислав нам описание хака, полезный совет или описание клевой неизвестной проги, ты по-прежнему можешь получить подписку на месяц, три месяца или, если постараешься, на год.