Версия WordPress по умолчанию выводится в HTML-коде страницы и в REST API. Это потенциальный риск безопасности, потому что злоумышленники могут использовать информацию о версии для поиска уязвимостей. В этой статье подробно рассмотрим, как скрыть версию WordPress из публичных мест, чтобы повысить безопасность вашего сайта.
Почему важно убрать версию WordPress из HTML и REST API
Версия WordPress отображается в метатеге <meta name="generator" content="WordPress 5.8" /> и в HTTP-заголовках. Также REST API возвращает версию в ответах. Если злоумышленник знает точную версию, он может подобрать эксплойты, соответствующие именно этой версии. Удаление или маскировка версии — простой, но эффективный метод снижения риска.
Хотя удаление версии не решает все проблемы безопасности, оно усложняет задачу автоматизированным сканерам уязвимостей. Это элемент хороших практик по защите сайта.
Удаление версии WordPress из HTML-кода
По умолчанию WordPress добавляет метатег generator с версией. Чтобы убрать его, воспользуемся хуком wp_head. Добавьте следующий код в файл functions.php вашей темы или в плагин:
function wpinfo_remove_wp_version() {
return '';
}
add_filter('the_generator', 'wpinfo_remove_wp_version');Этот фильтр заменяет стандартный вывод версии пустой строкой. После этого метатег generator не будет выводиться в HTML.
Удаление версии из RSS-лент
WordPress также выводит версию в RSS. Для ее удаления добавьте:
remove_action('wp_head', 'wp_generator');Этот вызов отключит генератор версии из заголовков RSS и HTML.
Удаление версии из REST API
REST API WordPress по умолчанию возвращает версию в заголовках и в теле ответа. Чтобы удалить версию из заголовка X-WP-Version и из тела, используйте следующий код:
function wpinfo_remove_rest_version() {
return '';
}
add_filter('rest_send_headers', function($headers) {
unset($headers['X-WP-Version']);
return $headers;
});
add_filter('rest_index', function($response) {
if (isset($response['version'])) {
unset($response['version']);
}
return $response;
});Первый фильтр удаляет заголовок X-WP-Version, а второй — убирает поле версии из тела ответа REST API.
Плагины для скрытия версии WordPress
Если вы предпочитаете не вносить изменения вручную, можно использовать плагины безопасности, которые скрывают версию сайта:
- WP Hide & Security Enhancer — позволяет скрыть версию WordPress из кода, REST API и HTTP-заголовков.
- Remove WordPress Version — простой плагин для удаления версии из front-end и RSS.
- Security Ninja — комплексный плагин с опцией скрытия версии и другими функциями безопасности.
При выборе плагина обращайте внимание на обновления и отзывы, чтобы не ухудшить производительность сайта.
Дополнительные рекомендации по безопасности
Удаление версии — это лишь часть мер безопасности. Чтобы надежно защитить WordPress, стоит также:
- Регулярно обновлять ядро, темы и плагины.
- Использовать сложные пароли и двухфакторную аутентификацию.
- Ограничивать количество попыток входа и использовать firewall.
- Проверять и чистить базу данных от неиспользуемых записей.
Комбинация этих мер уменьшит риск взлома и обеспечит стабильную работу сайта.
Пример комплексного решения в functions.php
Объединим все приведенные выше методы в одном фрагменте, который можно добавить в functions.php:
function wpinfo_secure_hide_version() {
// Убираем метатег generator
add_filter('the_generator', '__return_empty_string');
// Убираем генератор из заголовков
remove_action('wp_head', 'wp_generator');
// Убираем версию из REST API заголовков
add_filter('rest_send_headers', function($headers) {
unset($headers['X-WP-Version']);
return $headers;
});
// Убираем версию из тела REST API
add_filter('rest_index', function($response) {
if (isset($response['version'])) {
unset($response['version']);
}
return $response;
});
}
add_action('init', 'wpinfo_secure_hide_version');Этот код можно использовать как базовое средство для скрытия версии WordPress без плагинов.
Как проверить, что версия WordPress скрыта
Чтобы убедиться, что версия WordPress не отображается, выполните несколько проверок:
- Откройте исходный код страницы (Ctrl+U) и найдите
generator. Его не должно быть. - Используйте curl или браузер для запроса к REST API, например
https://example.com/wp-json/, и проверьте, отсутствует ли полеversionв ответе. - Проверьте HTTP-заголовки с помощью инструментов разработчика, убедитесь, что заголовок
X-WP-Versionотсутствует.
Если версия не найдена, значит скрытие сработало.
Выводы и практическое значение
Скрытие версии WordPress — простая, но важная мера безопасности. Она не заменяет обновления и другие методы защиты, но помогает снизить риски, связанные с автоматизированным сканированием и атаками по известным уязвимостям. Используйте приведенные советы, чтобы сделать ваш сайт на WordPress более защищенным и устойчивым к внешним угрозам.