Версия WordPress по умолчанию отображается в HTML-коде страниц и в HTTP-заголовках ответа сервера. Это создает потенциальный риск для безопасности, так как злоумышленники могут узнать, какую версию вы используете, и подобрать подходящие эксплойты. В этой статье подробно рассмотрим, как убрать или скрыть версию WordPress из всех видимых мест, используя как готовые плагины, так и собственные функции.
Почему важно скрывать версию WordPress
WordPress — самая популярная CMS в мире, что делает ее главным объектом для атак. Многие уязвимости зависят от конкретной версии. Если злоумышленник видит, что вы используете устаревшую версию, он может попытаться воспользоваться известными дырами.
Кроме того, даже если вы регулярно обновляете сайт, информация о версии облегчает сканирование и автоматический подбор атак. Поэтому рекомендуется скрывать версию WordPress везде, где это возможно.
Типичные места, где отображается версия:
- мета-тег
<meta name="generator">в HTML; - HTTP-заголовок
X-Powered-Byилиgenerator; - в RSS-лентах;
- в файлах CSS и JS, которые подключаются с параметром версии.
Как убрать версию WordPress из HTML-кода
По умолчанию WordPress выводит мета-тег с версией в <head>:
<meta name="generator" content="WordPress 6.2" />Чтобы убрать этот мета-тег, достаточно воспользоваться хуком the_generator. Добавьте в файл functions.php вашей темы или в свой плагин следующий код:
function wphide_remove_wp_version() {
return '';
}
add_filter('the_generator', 'wphide_remove_wp_version');Этот фильтр заменит вывод версии на пустую строку, и мета-тег не будет выводиться.
Удаление версии из RSS-лент
Версия также выводится в RSS-лентах. Чтобы убрать ее оттуда, используйте:
remove_action('wp_head', 'wp_generator');Эту строку можно добавить в functions.php или в плагин. Она удалит генератор из заголовка страницы и RSS.
Удаление версии из HTTP-заголовков
Сервер Apache и PHP иногда добавляют заголовок X-Powered-By, в котором может быть указана версия PHP, а также в некоторых случаях версия WordPress.
Для удаления заголовка PHP в php.ini укажите:
expose_php = OffЕсли вы не имеете доступа к php.ini, можно попытаться убрать заголовок на уровне WordPress:
function wphide_remove_x_powered_by() {
header_remove('X-Powered-By');
}
add_action('send_headers', 'wphide_remove_x_powered_by');<Этот код удалит заголовок перед отправкой ответа.
Удаление версии из параметров CSS и JS
WordPress автоматически добавляет параметр ?ver=6.2 к URL скриптов и стилей. Это обычно делается для контроля кэширования, но с другой стороны, показывает версию.
Если вы хотите убрать этот параметр, можно использовать следующий фильтр:
function wphide_remove_cssjs_ver( $src ) {
if ( strpos( $src, 'ver=' ) ) {
$src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_filter( 'style_loader_src', 'wphide_remove_cssjs_ver', 9999 );
add_filter( 'script_loader_src', 'wphide_remove_cssjs_ver', 9999 );Будьте осторожны: удаление параметра версии может привести к тому, что браузеры будут кэшировать старые файлы и изменения не будут видны сразу.
Использование плагинов для скрытия версии WordPress
Если вы не хотите копаться в коде, есть проверенные плагины, которые помогут справиться с задачей:
- WP Hide & Security Enhancer — позволяет скрыть не только версию, но и пути к админке, плагинам, темам и многое другое.
- Remove WordPress Version — простой плагин, который удаляет версию из мета-тега и RSS.
- Security Headers — помогает настраивать заголовки безопасности и скрывать лишнюю информацию.
При выборе плагина обращайте внимание на актуальность и отзывы, так как некоторые могут конфликтовать с другими функциями сайта.
Резюме и рекомендации
Скрытие версии WordPress — важный, но не единственный шаг в повышении безопасности сайта. Важно регулярно обновлять CMS, плагины и темы, использовать надежные пароли и бэкапы.
Для скрытия версии используйте комбинацию методов: убирайте мета-теги, заголовки HTTP и параметры версий в скриптах. Если вы не уверены в своих силах, используйте проверенные плагины.
Пример комплексного кода для functions.php, который сочетает основные методы:
function wphide_remove_wp_version_all() {
// Убираем мета-тег generator
add_filter('the_generator', '__return_empty_string');
// Убираем генератор из заголовка
remove_action('wp_head', 'wp_generator');
// Убираем параметр версий из CSS и JS
add_filter( 'style_loader_src', 'wphide_remove_cssjs_ver', 9999 );
add_filter( 'script_loader_src', 'wphide_remove_cssjs_ver', 9999 );
// Удаляем заголовок X-Powered-By
add_action('send_headers', function() {
header_remove('X-Powered-By');
});
}
function wphide_remove_cssjs_ver( $src ) {
if ( strpos( $src, 'ver=' ) ) {
$src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_action('init', 'wphide_remove_wp_version_all');