Как отключить X-Powered-By, за минуту

Обновлено 05.10.2023

X-Powered-ByДобрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами познакомились с очень полезной утилитой Windows Admin Center, которая позволяет вам очень большие возможности по администрированию серверов и клиентских рабочих станций в домене. Сегодня я хочу с вами поговорить немного про безопасность веб ресурсов, а именно разобрать, что из себя представляет заголовок X-Powered-By, как его отключение может положительным образом сыграть на работе сайта. Я покажу, как отключать X-Powered-By для разных платформ. Думаю, что после прочтения данной статьи вы не поленитесь и сделаете это.

Что такое заголовок X-Powered-By

Все началось после попадания сайта под фильтр МПК от Яндекса, я рассматривал много всего, что можно улучшить и оптимизировать, например обновил PHP на сайте, а так же установил самую последнюю версию CMS WordPress 6.3, повысив безопасность и скорость. Но безопасность настолько многогранное направление, что 100% вы защититься не сможете, но стремиться к этому нужно. И вот в один из вечеров я наткнулся на X-Powered-By.

X-Powered-By - это заголовок HTTP, который обычно включается в ответ сервера при обработке запросов. Он указывает на программное обеспечение или технологию, используемую для работы веб-сервиса.

Особенности заголовка X-Powered-By:

  1. ✅Идентификация технологии: Заголовок X-Powered-By позволяет идентифицировать используемую технологию или программное обеспечение на сервере. Например, значение может быть "X-Powered-By: PHP/7.3.9" или "X-Powered-By: ASP.NET".
  2. ✅Отладка и анализ: Заголовок X-Powered-By может быть полезен при отладке и анализе работы веб-сервиса. Он помогает разработчикам определить, какие технологии и версии используются на сервере, что может быть полезно для устранения ошибок и оптимизации производительности.
  3. ❌Информация о безопасности: Заголовок X-Powered-By может содержать информацию о безопасности, такую как "X-Powered-By: Express". Это может быть полезно для злоумышленников, которые могут использовать эту информацию для атак на сервер.
  4. ✅Поддержка клиентов: Заголовок X-Powered-By может быть полезен для клиентов, чтобы узнать, какая технология используется на сервере. Например, разработчики могут использовать эту информацию для выбора правильного клиентского программного обеспечения или библиотеки для взаимодействия с сервером.
  5. ❌Влияние на производительность: Заголовок X-Powered-By может незначительно повлиять на производительность сервера, так как он добавляет дополнительную информацию в ответ сервера. Однако этот эффект обычно незаметен для большинства веб-сервисов.

Полезность и вред заголовка X-Powered-By зависит от конкретного случая и требований безопасности. В некоторых случаях полезно скрыть информацию о используемой технологии для повышения безопасности сервера. В других случаях, например, при разработке и отладке, полезно иметь доступ к этой информации.

Исходя из описанного выше, лично для себя я не вижу особого смысла в данном заголовке на моем сайте. Я и так знаю, какая у меня версия PHP, а рядовым пользователям, это и подавно не нужно.

На каких движках вы можете встретить X-Powered-By

  • Apache
  • Nginx
  • PHP
  • ASP.NET
  • Node.js

Вот пример запроса к серверу по определению X-Powered-By:

Server: nginx/1.20.2
Date: Wed, 04 Oct 2023 22:11:49 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 93882
Connection: keep-alive
Cache-Control: private, max-age=600
Last-Modified: Wed, 04 Oct 2023 22:11:49 GMT
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
Set-Cookie: Culture=ru; domain=myseldon.com; path=/
X-Powered-By: ASP.NET
Strict-Transport-Security: max-age=2592000

Тут видно, что сайт работает на IIS ASP.NET.

Как выглядит X-Powered-By

Как отключить заголовок X-Powered-By на IIS

Для того, чтобы ваш сервер не генерировал заголовок X-Powered-By вам необходимо открыть диспетчер IIS. На уровне сервера найдите иконку "HTTP Responce Header".

Как отключить заголовок X-Powered-By на IIS

Если тут будет строка X-Powered-By, смело ее удаляйте.

HTTP Responce Header удаление X-Powered-By

ASP.NET: В ASP.NET заголовок X-Powered-By может быть отключен путем установки значения "Response.Headers.Remove ("X-Powered-By")" в коде приложения или в файле конфигурации web.config. Включите эти строки в элемент <system.webServer>

<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>

Для IIS 10

<system.web>
<httpRuntime EnableVersionHeader="false"/>

Чтобы отключить заголовок X-Powered-By на IIS с помощью PowerShell, выполните следующие шаги:

Import-Module WebAdministration

  • Выполните команду, чтобы получить текущий конфигурационный файл IIS

$config = Get-WebConfiguration -PSPath 'IIS:\'

  • Получаем секцию httpProtocol в конфигурации

$httpProtocolSection = $config.GetSection('system.webServer/httpProtocol')

  • Устанавливаем значение false для добавления заголовка X-Powered-By

$httpProtocolSection.customHeaders.'add[@name="X-Powered-By"].value' = $false

  • Применяем изменения

$config | Set-WebConfiguration -PSPath 'IIS:\'

Этот код импортирует модуль WebAdministration, получает конфигурацию IIS и устанавливает значение false для добавления заголовка X-Powered-By в секции httpProtocol. Затем изменения применяются к конфигурации IIS с помощью Set-WebConfiguration.

Как удалить заголовок X-Powered-By в Apache

Для отключения заголовка X-Powered-By веб-сервере Apache можно использовать директиву "Header unset X-Powered-By" в файле конфигурации .htaccess или httpd.conf. Для этого вам нужно отредактировать ваш файл .htaccess, сделать это можно через подключение на хостинг или ваш сервер, открыв его через текстовый редактор и внеся вот такой код:

<IfModule mod_headers.c>
Header unset x-powered-by
</IfModule>

Еще вариант:

  • Включите модуль mod_headers с помощью заголовков a2enmod.
  • Откройте файл apache httpd.conf, который доступен внутри /usr/local/apache2/conf.
  • Удалите заголовок X-Powered-By, если он существует.
  • Перезапустите Apache с помощью systemctl, перезапустите apache2.

Как удалить заголовок X-Powered-By через PHP

Для отключения заголовка X-Powered-By в PHP можно использовать функцию header_remove() или установить значение "expose_php = Off" в файле php.ini.

sudo vi /etc/php.ini

Находим строку expose_php = on и меняем ее на expose_php = off

Не забудьте, что может понадобиться перезапуск сервера:

sudo service httpd restart или sudo service apache2 restart

Так же это можно сделать и на хостинге, например у меня это Mchost. Вам необходимо зайти в настройки сайта и выбрать управление PHP, там найти expose_php. Дождаться применения параметров.

PHP отключение X-Powered-By

Может получиться так, что у вас не будет доступа к файлу php.ini, в таком случае вы можете использовать код PHP. Добавьте в код для удаления X-Powered-By:

<?php header_remove("X-Powered-By");?>

Если хотите поиздеваться, над теми. кто обычно эти заголовки просматривает ,то можете указать вообще свое значение:

<?php header("X-Powered-By: TRALyaLya"); ?>

Как отключить заголовок X-Powered-By на Nginx

В случае с веб-сервером Nginx можно использовать директиву "proxy_hide_header X-Powered-By" в файле конфигурации для скрытия заголовка X-Powered-By.

Впишите в секцию http: server_tokens off;

Как удалить заголовок X-Powered-By в Node.js:

В Node.js заголовок X-Powered-By может быть отключен с помощью модуля Helmet, который позволяет установить значение "hidePoweredBy: true".

Запрещаем X-Powered-By на cloudflare

Создайте правило по пути:

Dashboard > Rules > Transform Rules > Managed Transforms

Влияние на время ответа

До отключения X-Powered-By:

Время ответа 231 мс
Сжатие gzip Нет
Размер ответа 11.4 Кб
Заголовок Last-Modified Нет
server: nginx
date: Wed, 04 Oct 2023 22:52:48 GMT
content-type: text/html; charset=UTF-8
content-length: 11632
x-powered-by: PHP/7.3.2
vary: Accept-Encoding,Cookie,User-Agent
cache-control: max-age=3, must-revalidate
cache-control: max-age=600
last-modified: Wed, 04 Oct 2023 15:34:31 GMT
expires: Wed, 04 Oct 2023 23:02:48 GMT
content-encoding: gzip

После выключения:

Время ответа 214 мс вплоть до 174
Сжатие gzip Нет
Размер ответа 11.4 Кб
Заголовок Last-Modified Нет
server: nginx
date: Wed, 04 Oct 2023 23:26:29 GMT
content-type: text/html; charset=UTF-8
content-length: 11632
vary: Accept-Encoding,Cookie,User-Agent
cache-control: max-age=3, must-revalidate
cache-control: max-age=600
last-modified: Wed, 04 Oct 2023 15:34:31 GMT
expires: Wed, 04 Oct 2023 23:36:29 GMT
content-encoding: gzip

Сравнение времени ответа при выключении X-Powered-By

В целом, решение о том, нужно ли отключать заголовок X-Powered-By, зависит от конкретных требований безопасности и конфиденциальности информации. Если информация о используемой технологии не должна быть доступна посторонним пользователям, то рекомендуется отключить этот заголовок. Однако, если требуется отладка или анализ работы сервера, то полезно оставить его включенным. На этом у меня все, с вами был Иван Сёмин ,автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

One Response to Как отключить X-Powered-By, за минуту

  1. Виктор:

    Тысяча спасиб:) закрыли данную брешь на корпоративном сайте, мелочь, а приятно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *