В HTTP-заголовках ответа сервер раскрывает своё имя и версию. Например, Server: nginx/1.18.0 или X-Powered-By: PHP/7.4. Это называется server signature. На первый взгляд это безобидно, но такая информация помогает злоумышленникам подбирать атаки. Разберём, чем опасен server signature, как его проверить и скрыть.
Что такое server signature
Server signature — это информация о сервере и программном обеспечении, которая передаётся в HTTP-заголовках ответа. Типичные заголовки:
— Server: nginx/1.18.0;
— X-Powered-By: PHP/7.4.33;
— X-AspNet-Version: 4.0.30319;
— X-Generator: WordPress 6.2.
Эти заголовки показывают, какое ПО используется и какая версия. Это может быть полезно для диагностики, но опасно для безопасности.
Чем опасен server signature
Основные риски:
— злоумышленник знает версию ПО и может искать известные уязвимости;
— можно подобрать эксплойт под конкретную версию;
— раскрывается стек технологий;
— упрощается разведка перед атакой;
— увеличивается риск автоматических атак.
Даже если сайт защищён, раскрытие версии ПО упрощает задачу злоумышленнику. Лучше не раскрывать эту информацию.
Причина 1: заголовок Server не скрыт
Самая частая причина. Nginx, Apache и другие серверы по умолчанию передают заголовок Server с версией.
Что проверить:
— заголовок Server;
— версию сервера;
— можно ли её скрыть.
Для проверки используйте проверка подписи сервера — инструмент покажет, какие заголовки отдаёт сервер.
Причина 2: X-Powered-By не отключён
Заголовок X-Powered-By раскрывает версию PHP, ASP.NET или другого ПО. Он часто включён по умолчанию.
Что проверить:
— заголовок X-Powered-By;
— версию ПО;
— можно ли его отключить.
В PHP это делается через настройку expose_php = Off. В ASP.NET — через настройки приложения.
Причина 3: CMS раскрывает версию
Некоторые CMS добавляют заголовки или meta-теги с версией. Например, WordPress может добавлять X-Generator или meta generator.
Что проверить:
— заголовок X-Generator;
— meta generator;
— другие заголовки с версией.
Многие CMS позволяют отключить эти заголовки через настройки или плагины.
Причина 4: сервер по умолчанию раскрывает информацию
Некоторые серверы и прокси по умолчанию раскрывают информацию о себе. Например, CDN может добавлять заголовки с именем и версией.
Что проверить:
— заголовки CDN;
— заголовки прокси;
— настройки сервера;
— можно ли скрыть информацию.
Причина 5: ошибки и страницы отладки
Иногда сервер раскрывает информацию в ошибках или страницах отладки. Например, при 500 ошибке может отображаться версия PHP и стек вызовов.
Что проверить:
— страницы ошибок;
— режим отладки;
— вывод ошибок;
— логи.
В production режим отладки должен быть отключён.
Как найти проблему
Пошаговая диагностика:
— проверьте заголовки ответа;
— проверьте Server;
— проверьте X-Powered-By;
— проверьте X-Generator;
— проверьте страницы ошибок;
— проверьте настройки CDN.
Как исправить
План действий:
— скрыть версию сервера в nginx или Apache;
— отключить X-Powered-By;
— отключить X-Generator в CMS;
— скрыть информацию в CDN;
— отключить режим отладки;
— проверить результат.
Как проверить результат
Чек-лист:
— заголовок Server не раскрывает версию;
— X-Powered-By отключён;
— X-Generator отключён;
— страницы ошибок не раскрывают информацию;
— CDN не раскрывает версию;
— режим отладки отключён.
Если нужно проверить сразу несколько параметров — заголовки, CSP, HSTS — логично перейти к SEO-аудиту.
Частые ошибки
— заголовок Server с версией;
— X-Powered-By включён;
— X-Generator в CMS;
— режим отладки в production;
— страницы ошибок с информацией;
— отсутствие проверки после изменений.
FAQ
Что такое server signature?
Это информация о сервере и ПО в HTTP-заголовках. Например, Server: nginx/1.18.0 или X-Powered-By: PHP/7.4.
Чем опасен server signature?
Он помогает злоумышленникам узнать версию ПО и подобрать известные уязвимости. Это упрощает атаку.
Как скрыть версию сервера в nginx?
Через директиву server_tokens off. Это скрывает версию в заголовке Server и на страницах ошибок.
Как отключить X-Powered-By?
В PHP через expose_php = Off. В других языках — через настройки приложения или сервера.
Влияет ли server signature на SEO?
Напрямую — нет. Но он влияет на безопасность, а безопасность может косвенно влиять на доверие и позиции.
Может ли CDN раскрывать версию?
Да. Некоторые CDN добавляют заголовки с именем и версией. Проверьте настройки CDN.
Что делать, если CMS добавляет X-Generator?
Отключить через настройки CMS или плагин. Многие CMS позволяют убрать этот заголовок.
Опасно ли раскрывать версию PHP?
Да. Если версия устарела и имеет известные уязвимости, злоумышленник может использовать это.
Нужно ли скрывать все заголовки?
Не все, а только те, которые раскрывают версию ПО. Остальные заголовки могут быть полезны.
Как проверить, скрыт ли server signature?
Используйте инструмент проверки подписи сервера. Он покажет, какие заголовки отдаёт сервер и раскрывают ли они версию.