XenForo 2.2.17 теперь доступен для скачивания. Мы рекомендуем всем пользователям, работающим с предыдущими версиями XenForo 2.2, обновиться до данной версии, чтобы повысить стабильность и безопасность работы форума. Примечание:
XenForo 2.3.1 и выше не затронуты этой проблемой. Если Вы все еще используете XenForo 2.3.0, Вам следует обновиться до последней версии или применить патч, приведенный ниже. Проблема связана с потенциальным эксплойтом перенаправления с использованием специально созданного URL. XenForo выражает благодарность @mattrogowski, @Jake B. и команде @ThemeHouse за то, что они сообщили нам об этой проблеме. Мы рекомендуем выполнить полное обновление для устранения проблем, но патч можно применить вручную. Более подробная информация приведена ниже. Применение патча вручную: Способ 1: ручное редактирование файла
Применение исправления в данном случае требует изменения одной функции в конкретном файле. Для этого найдите файл src/XF/App.php и найдите начало этой конкретной функции:
Код:
public function getDynamicRedirect($fallbackUrl = null, $useReferrer = true)
Найдите конец функции, который сейчас выглядит следующим образом:
Код:
return $fallbackUrl;
}
Удалите весь этот блок кода и замените его следующим:
Код:
public function getDynamicRedirect($fallbackUrl = null, $useReferrer = true)
{
if ($fallbackUrl === null)
{
$fallbackUrl = $this->router()->buildLink('index');
} $request = $this->request();
$fallbackUrl = $request->convertToAbsoluteUri($fallbackUrl); $redirect = $request->filter('_xfRedirect', 'str');
if (!$redirect && $useReferrer)
{
$redirect = $request->getServer('HTTP_X_AJAX_REFERER')
?: $request->getReferrer();
} if (!$redirect || !preg_match('/./su', $redirect))
{
// no redirect provided
return $fallbackUrl;
} if (
strpos($redirect, "\n") !== false ||
strpos($redirect, "\r") !== false ||
strpos($redirect, '@') !== false
)
{
// redirect contained newlines or user/pass
return $fallbackUrl;
} $fullRedirect = $request->convertToAbsoluteUri($redirect);
$redirectParts = @parse_url($fullRedirect);
$redirectHost = $redirectParts['host'] ?? null;
if (!$redirectHost)
{
// no redirect host
return $fallbackUrl;
} $requestParts = @parse_url($request->getFullBasePath());
$requestHost = $requestParts['host'] ?? null;
if ($redirectHost !== $requestHost)
{
// redirect host did not match request host
return $fallbackUrl;
} return $fullRedirect;
}
Способ 2: применение патча/диффа
Для автоматического исправления файла можно применить следующее исправление:
Примечание: Если вы решите исправить файлы вместо полного обновления, "Проверка работоспособности файлов" сообщит, что этот файл имеет "Неожиданное содержимое". Поскольку эти файлы больше не содержат того же содержимого, с которым поставлялась ваша версия XF, это вполне ожидаемо и может быть проигнорировано. Как всегда, новые версии XenForo бесплатны для скачивания для всех клиентов с активными лицензиями, которые теперь могут загрузить новую версию из клиентской зоны или обновить ее из вашей панели управления администратора (Инструменты > Проверить наличие обновлений...). Текущие системные требования Минимальные системные требования:
PHP 7.0 или новее (мы рекомендуем PHP 8.2)
MySQL 5.5 и новее (так же совместимо с MariaDB/Percona и т.д. )
Все официальные плагины требуют для своей работы XenForo 2.2
Enhanced Search требует последнюю версию Elasticsearch 2.0.