→ VBulletin – история. VBulletin – история Бесплодный vbulletin

VBulletin – история. VBulletin – история Бесплодный vbulletin

Любой движок, требует определенных действий для оптимизации его для лучшей и быстрой работы. В нашем же случае мы поговорим об оптимизации Vbulletin 4.

Так как движок нашего форума постоянно обновляется, я не буду писать об оптимизации более ранних версий Vbulletin , а начну именно с версии 4.1.12. Хотя возможно, постепенно буду дополнять эту статью и оптимизацией для предыдущих версий, так как не все переходят на более новые.

Здесь я приведу несколько примеров, чтобы сделать Ваш форум Vbulletin быстрее и лучше (начиная с самых простых вещей, переходя к более сложным). Пожалуйста, имейте в виду, что те вещи которые работают у меня, не обязательно будут работать и у вас. Поэтому все изменения вы делаете на свой страх и риск.

Отключение списка пользователей.

Существует простой способ, просто отключить функцию в AdminCP. (Settings -> Options -> User Listing Options)

Это не глобально конечно, и вы можете это пропустить и не делать, просто задайте себе вопрос нужно ли вам это? Так как имея список пользователи могут сортировать его, посмотреть у кого больше сообщений, репутация и так далее. Ваши пользователи пользуются этим? Наверное, нет…, когда вы сами в последний раз пользовались этим списком?

Как по мне, так мне кажется, что данные списки только на пользу спамерам, так как это самый простой способ собрать все именна участников форума Vbulletin 4 для рассылки спама в личных сообщениях.

Кроме этого, запрос который необходим для генерации списка пользователей ужасен для серверов баз данных и может привести к большой загрузке сервера.

Увеличение скорости при обработке списка личных сообщений.

Если вы некогда не импортировали личные сообщения от внешних источников с помощью Impex или других средств, вы можете смело положиться на сортировку по ID для личных сообщений. Сортировка по ID будет делать так, чтобы вашему серверу базы данных не приходилось сбрасывать личные сообщения во временную таблицу для выполнения сортировки (делая запрос намного быстрее).

Чтобы сделать это, нужно прописать небольшой модуль с расположением в private_messagelist_filter и прописать в нем следующее:

If ($sortfield == "pmtext.dateline") $sortfield = "pm.pmid";

И все, вы только что сделали private.php на ~ 20% быстрее.


Настраиваем более эффективный поиск последних сообщений от пользователя.

Идем на фтп, ищем файл includes /class_userprofile.php, и заменяем в нем данные следующим образом, ищем:

$getlastposts = $this->registry->db->query_read_slave(" SELECT thread.title, thread.threadid, thread.forumid, thread.postuserid, post.postid, post.dateline FROM " . TABLE_PREFIX . "post AS post INNER JOIN " . TABLE_PREFIX . "thread AS thread USING (threadid) WHERE thread.visible = 1 AND post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ORDER BY post.dateline DESC LIMIT 20 ");

и заменяем на это (а конкретнее ORDER BY):

$getlastposts = $this->registry->db->query_read_slave(" SELECT thread.title, thread.threadid, thread.forumid, thread.postuserid, post.postid, post.dateline FROM " . TABLE_PREFIX . "post AS post INNER JOIN " . TABLE_PREFIX . "thread AS thread USING (threadid) WHERE thread.visible = 1 AND post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ORDER BY post.postid DESC LIMIT 20 ");

Это делает запрос немного правильнее, чем он существует в данном виде. Таким образом не придется делать сортировку во временную таблицу. Для пользователей у которых более 1000 сообщений, исходный запрос занял бы около 10 секунд, в нашем же случае намного меньше. Это в первую очередь относится к профилю пользователя Vbulletin 4, для отображения последних сообщений.

Проверка индекса тем.

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

Я предлагаю сделать так, чтобы сортировка по умолчанию была в виде даты (столбец который использует эти данные называется «dateline»), и чтобы это реализовать, выполним запрос:

ALTER TABLE thread ADD INDEX forumid2_dp (forumid, visible, sticky, dateline)

Это запрос применим ко мне конкретно, в вашем случае forumid2_dp должен иметь ваше имя. Используйте на свой страх и риск.

Будьте осторожны при установке дополнений.

Просто потому, что кто-то делает модули и хаки, не означает, что они сделаны именно для вас, работали на больших форумах Vbulletin 4 и не имеют ошибок. Прекрасным примером служат сообщения о массовых взломах, через тот или иной хак.

Конечно, можно предположить, что разработчики не могут всего учесть, и перелопатить все хаки, чтобы они не конфликтовали, но… Убедитесь, что модуль Vbulletin не вызывает больших нагрузок базы данных, убедитесь, что в хак имеет потенциал к защите от SQL инъекций или XSS. К сожалению, приложений и модификаций тысячи, и просто не реально все проверить. Лучше будет если все хаки вы будете писать себе сами, или заказывать у кого-либо. Конкретно под вас и ваши задачи.

Не используйте таблицы в InnoDB.

Тут конечно мне могут плюнуть в лицо, так как эта тема уже обсуждалась миллион раз, но по своему опыту могу сказать, что я работаю 100% на MyISAM таблицах для любого действия. Бывает обрабатываю 1000 запросов в секунду.

Если вы уже начинаете психовать где при запросах у вас все повисает, особенно в новом поиске Vbulletin, смените таблицы InnoDB в MyISAM. MyISAM отвечает быстрее на отдельные запросы, так как не нужно управлять блокировкой отдельных записей. InnoDB работает быстрее в целом, но только потому, что позволяет выполнять запросы одновременно. если ваши запросы и так исполняются быстро под MyISAM, нет необходимости переходить на InnoDB. ИМХО.

Рейтинг статьи

0%

Рейтинг

User Rating: 0.35 (1 votes)

vBulletin, который в среде оптимизаторов быстро приобрел сокращенное название vB – коммерческий веб-форум, разработанный организацией Jelsoft Enterprises. Программное обеспечение было написано на PHP, а в качестве баз данных он использует сервер MySQL. Зачастую по нему возникает множество вопросов со стороны вебмастеров и оптимизаторов, ввиду чего на SEOCafe.info, например, создан раздел vBulletin форум где готовы помочь решению возникших вопросов.

В 1999 году Джеймс Лимм и Джон Перкивал решили открыть сайт VB Forums, посвященный языку программирования Visual Basic. В качестве веб-форума они использовали UBB.classic, разработанный Groupee, Inc. Со временем спрос на сайт стал стабильно расти. В итоге создатели в один прекрасный день отметили, что ресурс уже не мог справляться с таким наплывом посетителей – скорее всего ввиду того, что он был написан на Perl и использовал файл-серверную базу данных. Так или иначе, но в начале 2000 года было решено написать новый веб-форум. Первоначальная задумка заключалась в переписывании UBB на PHP с использованием MySQL. Однако буквально через несколько месяцев и другие обладатели UBB вздумали получить нечто подобное себе. В итоге Лимм и Перкивал решили продать наработки компании Groupee, Inc., но предложение не было принято. Но в то же время запросы на это решение все еще поступали, в связи с чем Лимм с Перкивалом решили открыть компанию Jelsoft, после чего стали распространять наработки как коммерческое программное обеспечение. Именно так и появился vBulletin 1.

После этого Лимм с Перкивалом выпустили еще несколько версий, незначительно отличавшихся от оригинала, и начали работу над новой версией, отметив, что она станет большим, чем просто переписывание UBB-кода. Они хотели не просто выпустить новый продукт, а превратить форум в настоящее конкурентоспособное решение . Так, полностью переписав свой продукт, они получили vBulletin 2. Немного преуспев на этом деле, создатели позволили себе расширить организацию. Теперь Лимм стал финансовым директором, а Перкивал – ведущим разработчиком. Работа закипела, и пришлось нанимать еще двух разработчиков – уж слишком масштабным выходил проект – Фрэдди Бингхэма и Майка Салливана. В целях дальнейшего положительного развития проекта во время бета-тестирования был нанят Кир Дэрби. В итоге мир увидела окончательная версия vBulletin 2, которая получилась очень удачной, ввиду чего очень быстро завоевала популярность многочисленных пользователей .

В конце 2002 года неугомонные разработчики начали разрабатывать третью версию продукта. В это время Перкивал оставляет свой пост ведущего разработчика. Он даже отказывается от недавно присвоенной должности бренд-менеджера и передает все свои полномочия Киру Дэрби. Около двух лет занял процесс работы над третьей версией. Первоначально никто и не планировал выпускать третью версию – работы начинались как улучшение второй версии, но в итоге завершились полным переписыванием кода. И после двух долгих лет работы в марте 2004 года версия вышла в свет. В 2005 выпустили версию 3.5 – этакую улучшенную 3.0 . И с тех пор почти каждый год в мир стали выходить улучшенные версии продукта.

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

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

Версия 3.0, решение о создании которой, как мы уже упоминали, пришло к создателям в процессе усовершенствования второй, отличилась тем, что стили и шаблоны стали использовать CSS и XHTML. Кроме того, создатели ориентировались на то, что пользователи были из различных стран, поэтому еще одной особенностью стало и отсутствие изначального английского текста, теперь имелась поддержка множества языков. Для отправки сообщений появился визуальный редактор. Появились коммерческие подписки, которые позволили администраторам научиться зарабатывать на некоторых особенностях своих сайтов. И, наконец, вариантов отображения тем стало великое множество – и линейный, обычный список, и древовидный, и комбинированный.

Одна из следующих версий (3.6) была с довольно крупными изменениями. Появились мульти-цитирование, автоматическое размещение RSS лент, а также несомненный шаг вперед – поддержка подкастинга.

Важный момент, смена разработчиков, внутренние конфликты и разногласия, в результате которых vBulletin 4 большинство вебмастеров считает провальным . В 2010 Майк Салливан (Mike Sullivan) и Кир Дарби (Kier Darby) как отдельный проект, выпустили платный движок форума XenForo . На фоне «глючного» vBulletin 4, молодой проект XenForo выглядит конкурентной альтернативой. Впрочем, подавляющее большиство крупных форумов осталось на линейке vBulletin 3.х, преимущество которой в стабильности и большой количестве дополнительных продуктов.

Предыдущая Следующая

Исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое. Скачать бесплатно .


vBulletin Connect v5.3.3 - мощный, масштабируемый и полностью настраиваемый пакет форумов для вашего сайта.

Версия: 5.3.3 (Nulled by vBSupport.org)

Минимальные требования php 5.6
Совместимость с php 7.1
При новой установке необходимо переименовать файл htaccess.txt в.htaccess
При обновлении удалить папку fonts (до запуска обновления).

Новые возможности:
Новый UI с обширной социальной интеграцией;
Оптимизирован под мобильные устройства;
Упрощена установка, управление и настройка;
Новая архитектура базы данных для улучшения поиска и лучшей производительности;
Удобное динамическое изменение контента;
Расширенная для обмена видео и изображениями;
Полная интеграция с VigLink;
Больше чем 100 других новых функций и улучшений;

Встроенные приложения:
Дискуссионный форум
Группы
Опросы
Блог

Оптимизация поисковой системы:
SEO дружественные URL
Пользовательский тег ключевых слов/описания META

Гибкость:
Расширяемые профили пользователей
Перезапись URL
Интерфейсная локализация
Метаданные

Соответствие стандартов:
Объединение в синдикаты содержания (RSS)
Объединение в синдикаты содержания: RSS, Atom, XML
PHP v5.4 совместимый

Без разрывный интегрированная система:
Единственный задействованный вход в систему
Единственная система разрешения
Единственная администраторская панель управления
Создайте непрерывный Стиль/тему через Статьи, Блоги, Форум

Панели управления для каждой роли:
Администраторские средства управления
Панель управления модератора
Пользовательская панель управления
Объединенная система разрешения
Движок шаблонов питания для усовершенствованной настройки

Управление пользователя:
Многопользовательская система с неограниченными ролями и полномочиями
Задействованные группы
Безопасность
Гранулированные полномочия
Проблемное уведомление
Совместимый SSL
Captcha
Подтверждение адреса электронной почты
Администраторский редактор новостей панели управления
Система "забастовки" входа в систему
Электронная почта и изменения Пароля требуют текущего пароля
Совместимый с Children"s Online Privacy Protection Act (COPPA) 1998

1. Зайдите в панель управления администратора:
Languages & Phrases - Download / Upload Languages.
2. В поле "EITHER upload the XML file from your computer" введите путь к
файлу vbulletin-language_ru.xml на Вашем компьютере.
3. В параметре "Overwrite Language" выберите пункт "Create New Language"
4. В поле "Title for Uploaded Language" введите название языка.
При отсутствии введённых данных язык будет называться "Russian (RU)"
5. Установите "Yes" в параметре "Ignore Language Version"
6. Установите "Yes" в параметре "Read Charset from XML File"
7. Нажмите на кнопку "Import" и ждите завершения процесса загрузки.
7А При желании, Вы можете сделать новый язык языком "По умолчанию",
нажав возле него кнопку "Default" / "Значение по умолчанию".





Ты наверняка неоднократно видел форумы на движке vBulletin. Форумы как таковые уже не на пике моды, но vBulletin по-прежнему один из самых популярных движков. В его последней (пятой) версии нашли несколько уязвимостей, которые способны сильно испортить жизнь админу. В этой статье я расскажу, как они эксплуатируются.

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

Вторая уязвимость была найдена исследователями из компании TRUEL IT и получила идентификатор CVE-2017-17672. Она связана с особенностями десериализации данных в движке и может быть использована атакующим для удаления произвольных файлов в системе.

Полные отчеты с деталями обеих проблем были опубликованы в рамках программы Beyond Security от SecuriTeam. Там же есть PoC-эксплоиты для демонстрации уязвимостей. Давай по порядку пройдемся по всему этому.

Приготовления

В качестве сервера я использовал дистрибутив WAMP.

Читаем файлы, выполняем команды

Итак, причина первой уязвимости - некорректная логика при обработке параметра routestring, которая позволяет атакующему добавить через include любой файл на диске и выполнить PHP-код, который в нем находится.

Наш путь начинается с самого главного файла - index.php, где происходит базовая инициализация приложения.

/index.php
48: $app = vB5_Frontend_Application::init("config.php"); ... 60: $routing = $app->getRouter(); 61: $method = $routing->getAction(); 62: $template = $routing->getTemplate(); 63: $class = $routing->getControllerClass();

Посмотрим на метод vB5_Frontend_Application::init .

/includes/vb5/frontend/application.php
13: class vB5_Frontend_Application extends vB5_ApplicationAbstract 14: { 15: public static function init($configFile) 16: { 17: parent::init($configFile); 18: 19: self::$instance = new vB5_Frontend_Application(); 20: self::$instance->router = new vB5_Frontend_Routing(); 21: self::$instance->router->setRoutes();

Здесь нас интересует метод setRoutes .

47: public function setRoutes() 48: { 49: $this->processQueryString(); ... 54: if (isset($_GET["routestring"])) 55: { 56: $path = $_GET["routestring"];

В переменную $path попадает значение юзердаты из параметра routestring . В него можно передать путь до страницы форума, и она будет загружена.



Допустим, мы передали /test .

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

/includes/vb5/frontend/routing.php
75: if (strlen($path) AND $path{0} == "/") 76: { 77: $path = substr($path, 1); // $path = "test" 78: }
includes\vb5\frontend\routing.php
83: if (strlen($path) > 2) 84: { 85: $ext = strtolower(substr($path, -4)) ; 86: if (($ext == ".gif") OR ($ext == ".png") OR ($ext == ".jpg") OR ($ext == ".css") 87: OR (strtolower(substr($path, -3)) == ".js")) 88: { 89: header("HTTP/1.0 404 Not Found"); 90: die(""); 91: } 92: }

Как видишь, проверка довольно странная. Как минимум смущает наличие зашитого прямо в код списка запрещенных расширений. Да и вообще сам факт, что расширение получают, вырезая четыре символа с конца строки (строка 85), вызывает недоумение. В общем, если мы пытаемся получить файл с расширениями gif, png, jsp, css или js, то сервер вернет страницу 404 и выполнение скрипта прекратится. Когда все проверки пройдены, с помощью callApi вызывается метод getRoute из класса vB_Api_Route . Он ищет подходящие роуты, исходя из переданной пользователем информации.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!

 

 

Это интересно: