Версия WordPress по умолчанию отображается в исходном коде сайта и в REST API. Это может стать уязвимостью, так как злоумышленники получают информацию о версии вашей CMS и могут использовать известные уязвимости. В этой статье мы подробно разберём, как безопасно убрать версию WordPress из HTML-кода и REST API, используя собственные функции и лучшие практики.
Почему важно скрывать версию WordPress
Информация о версии помогает хакерам выбирать эксплойты для атак на сайт. Например, если у вас старая версия с известными багами, злоумышленник может попытаться воспользоваться ими. Скрытие версии не гарантирует 100% защиту, но значительно усложняет задачу взлома.
Поэтому одним из важных шагов в защите сайта является удаление версии из:
- мета-тега
generatorв <head>; - REST API ответов;
- заголовков HTTP;
- скриптов и стилей, подключаемых с параметром версии.
Удаление версии WordPress из мета-тега generator
По умолчанию WordPress выводит в <head> мета-тег с версией:
<meta name="generator" content="WordPress 6.2" />Чтобы убрать этот тег, используйте следующий код в functions.php вашей темы или в собственном плагине:
function wpmax_remove_wp_version() {
return '';
}
add_filter('the_generator', 'wpmax_remove_wp_version');Фильтр the_generator позволяет изменить или полностью убрать вывод мета-тега generator.
Удаление версии WordPress из REST API
REST API по умолчанию возвращает в ответах версию WP в HTTP-заголовках и в теле ответа. Чтобы убрать эту информацию, добавим фильтр:
function wpmax_remove_wp_rest_version() {
return '';
}
add_filter('rest_output_link_header', '__return_false');
add_filter('rest_api_init', function() {
remove_action('rest_api_init', 'wp_oembed_register_route');
});
add_filter('wp_headers', function($headers) {
if(isset($headers['X-WP-Version'])) {
unset($headers['X-WP-Version']);
}
return $headers;
});Этот код убирает заголовок X-WP-Version и отключает автоматическую регистрацию некоторых REST маршрутов, которые могут раскрывать версию.
Удаление версии из скриптов и стилей
WordPress добавляет в URL подключаемых CSS и JS файлов параметр ?ver=6.2 — версия WP. Некоторые считают, что это позволяет злоумышленникам узнать версию. Чтобы убрать эти параметры, используйте следующий фильтр:
function wpmax_remove_script_version( $src ) {
if (strpos($src, 'ver=')) {
$src = remove_query_arg('ver', $src);
}
return $src;
}
add_filter('script_loader_src', 'wpmax_remove_script_version', 9999);
add_filter('style_loader_src', 'wpmax_remove_script_version', 9999);Это поможет скрыть версию в URL скриптов и стилей, но обратите внимание, что это может повлиять на кеширование при обновлениях.
Дополнительные меры безопасности с помощью плагинов
Если вы хотите более комплексное решение, то можно воспользоваться плагином Clearfy Pro. Он позволяет убрать версию WordPress, отключить ненужные REST API эндпоинты и оптимизировать безопасность сайта без сложных настроек.
Также полезен плагин WPRemark, который помогает управлять выводом данных в HTML и REST API.
Проверка результата и отладка
После внесения изменений обязательно проверьте исходный код сайта (Ctrl+U в браузере) — мета-тег generator должен отсутствовать.
Проверьте также заголовки HTTP с помощью онлайн-сервисов или инструментов разработчика браузера. Заголовок X-WP-Version не должен отображаться.
Для проверки REST API вызовите ссылку https://ваш-сайт.ru/wp-json/ и убедитесь, что в ответах не видно версии WordPress.
Итог
Удаление версии WordPress из HTML и REST API — важный шаг в повышении безопасности вашего сайта. Используйте описанные функции wpmax_remove_wp_version и wpmax_remove_wp_rest_version для эффективного удаления версии, а при необходимости — расширяйте функциональность с помощью надежных плагинов из каталога WPSHOP.