По умолчанию WordPress указывает свою версию везде где только можно. Он добавляет ее в шапку сайта, отдает в фиде, добавляет в названия css-файлов. С практической точки зрения я не могу объяснить зачем это сделано. Зато с точки зрения безопасности, это не есть хорошо. Ведь воспользовавшись этой особенностью WordPress, злоумышленник может узнать версию движка, после чего найти и постараться применить все известные уязвимости для этой версии.
Проще всего узнать версию WordPress можно просмотрев код страницы сайта, в большинстве браузеров для этого нужно нажать сочетание клавиш Ctrl+U. В шапке главной страницы, после тега <head>, можно обнаружить метатег называемый "generator". Именно он и указывает на версию WordPress.
<meta name="generator" content="WordPress 4.8.1" />
Помимо кода страницы, версию WordPress можно узнать если просмотреть RSS ленту сайта, если она конечно не отключена. Это можно сделать если обратиться к сайту по следующему адресу - yourdomain.com/feed/. Вот что можно увидеть, обратите внимание на пятую строку.
<lastBuildDate>Thu, 03 Aug 2017 00:36:19 +0000</lastBuildDate> <language>ru-RU</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>https://wordpress.org/?v=4.8.1</generator>
Все это можно убрать, если отредактировать файл functions.php текущей темы оформления сайта, вставив в его конец следующий код.
add_filter('the_generator', '__return_empty_string');
После редактирования functions.php можно еще раз просмотреть код страницы или feed. Метатега "generator" там больше не будет, только перед тем как повторно проверять RSS ленту, нужно очистить кэш браузера. Но это еще не значит, что возможность узнать версию WordPress полностью исчезла.
Если внимательно просмотреть код страницы, то можно увидеть что версия WordPress указана в ссылках подгружающих css-файлы или js-скрипты. Изначально версия движка не присутствует в названиях файлов, WordPress ее добавляет автоматически. Возможно вы и не обращали внимания, но например, файл с именем dashicons.min.css, будет выглядеть так.
dashicons.min.css?ver=4.8.1
Соответственно этим могут воспользоваться. Ведь все как на ладони, конечно если знать куда смотреть. С помощью правки все того-же файла functions.php можно убрать и это недоразумение, если добавить в конец файла следующий код.
function secure_remove_wp_ver_css_js($src) { if(strpos($src, 'ver=')) $src = remove_query_arg('ver', $src); return $src; } add_filter('style_loader_src', 'secure_remove_wp_ver_css_js', 9999); add_filter('script_loader_src', 'secure_remove_wp_ver_css_js', 9999);
Кстати это влияет не только на безопасность, но еще и немного оптимизирует код сайта, удаляя параметры строки запроса (query strings) для статических ресурсов. Проверить это можно здесь.
Вот что вышло у меня со включенными версиями. Как можно увидеть общая оценка 85 баллов. Раздел "Remove query strings from static resources" оценивается в 50 баллов и показывает все найденные недочеты.
А вот что вышло с выключенными версиями. Общая оценка сразу же увеличилась до 91 балла, а раздел "Remove query strings from static resources" набрал 100 баллов и больше ничего подозрительного не нашел.
Все это конечно хорошо, но лишний раз перегружать functions.php лишним кодом не стоит, все таки данный файл создан не для этого. Существует плагин делающий сразу все, что было описано выше. Плагин называется Meta Generator and Version Info Remover.
Если вы думаете что на этом все, то вы ошибаетесь. Существует еще две лазейки, которые могут раскрыть версию WordPress.
В корневой директории сайта находятся два файла - readme.html и license.txt. Перейдя по адресу yourdomain.com/readme.html или license.txt можно увидеть версию движка. Эти файлы можно просто удалить, для работы сайта они не нужны. Но после обновления версии WordPress, они появятся снова.
Если вы используете Nginx в качестве сервера, то в конфигурацию сайта можно добавить следующее правило, которое будет запрещать доступ к подобным типам файлов.
location ~* /(readme.(html|txt|md)|license.(html|txt|md))$ { deny all; }
Помимо этого, в директории /wp-content/languages/ находятся файлы перевода ru_RU.po, ru_RU.mo и некоторые другие. Если обратиться к одному из таких файлов через браузер, он загрузится на жесткий диск и просмотрев его можно увидеть версию WordPress.
Удалять эти файлы нельзя, но можно запретить к ним доступ, как в предыдущем случае.
location ~ /wp-content/languages/(.+)\.(po|mo)$ { deny all; }
Вот теперь можно с уверенностью сказать что версия WordPress скрыта. Хотя если вовремя обновлять WordPress, то и скрывать ничего не понадобится.