Каждая страница в приложении MVC, с которым я работаю, устанавливает следующие HTTP-заголовки в ответах:
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0
Как я могу предотвратить их показ?
asp.net-mvc
security
http-headers
Пол Фрайер
источник
источник
Ответы:
X-Powered-By
пользовательский заголовок в IIS Начиная с IIS 7, вы можете удалить его, добавив следующееweb.config
:Этот заголовок также можно изменить в соответствии с вашими потребностями, для получения дополнительной информации см. Http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders.
Добавьте это, чтобы
web.config
избавиться отX-AspNet-Version
заголовка:Наконец, удалите
X-AspNetMvc-Version
, отредактируйтеGlobal.asax.cs
и добавьте следующее вApplication_Start
событие:Вы также можете изменить заголовки во время выполнения через
Application_PreSendRequestHeaders
событие вGlobal.asax.cs
. Это полезно, если значения вашего заголовка являются динамическими:источник
X-Powered-By
заголовок. Смотрите другие ответы о том, как этого добитьсяweb.config
.Вы также можете удалить их, добавив код в ваш файл global.asax:
источник
<system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> <redirectHeaders> <clear /> </redirectHeaders> </httpProtocol> </system.webServer>
Я нашел эту конфигурацию в моем,
web.config
который былNew Web Site...
создан для Visual Studio (в отличие от aNew Project...
). Так как в вопросе говорится о приложении ASP.NET MVC, не так актуально, но все же вариант.Обновление : Кроме того, у Троя Ханта есть статья под названием Shhh ... не позволяйте заголовкам ваших ответов говорить слишком громко с подробными шагами по удалению этих заголовков, а также ссылкой на его инструмент ASafaWeb для сканирования их и других настроек безопасности.
источник
code
<security> <requestFiltering> <verbs> <add verb = «ОПЦИИ» позволили = «ложь» /> </ verbs> </ requestFiltering> </ security>code
Чтобы удалить заголовок сервера , в файле Program.cs добавьте следующую опцию:
Для dot net core 1, добавьте опцию внутри вызова .UseKestrel (). Для dot net core 2 добавьте строку после UseStartup ().
Чтобы удалить заголовок X-Powered-By , если он развернут в IIS, отредактируйте ваш web.config и добавьте следующий раздел в тег system.webServer:
Чтобы удалить заголовок сервера , в файле global.asax добавьте следующее:
Добавьте следующий класс c # в ваш проект:
а затем в вашем файле web.config добавьте следующий раздел <modules>:
Однако у меня была проблема, когда подпроекты не могли найти этот модуль. Не смешно.
Удаление заголовка X-AspNetMvc-Version
Чтобы удалить тег '' X-AspNetMvc-Version '', для любой версии .NET измените файл '' web.config '', включив в него:
Спасибо Microsoft за то, что сделали это невероятно трудным. Или, возможно, это было ваше намерение, чтобы вы могли отслеживать установки IIS и MVC по всему миру ...
источник
RemoveServerHeaderModule
это не сработает в проекте WebAPI.Как описано в разделе «Закрытие веб-приложения ASP.NET MVC в IIS 7» , вы можете отключить заголовок X-AspNet-Version, применив следующий раздел конфигурации к вашему web.config:
и удалите заголовок X-AspNetMvc-Version, изменив свой файл Global.asax.cs следующим образом:
Как описано в разделе « Пользовательские заголовки». Вы можете удалить заголовок «X-Powered-By», применив следующий раздел конфигурации к вашему web.config:
Не существует простого способа удалить заголовок ответа «Сервер» с помощью конфигурации, но вы можете реализовать функцию
HttpModule
удаления определенных заголовков HTTP, как описано в разделе «Закрытие веб-приложения ASP.NET MVC в IIS 7» и в инструкции «как удалить сервер». x-aspnet-version-x-aspnetmvc-version-and-x-powered-by-from-the-response-header-in-iis7 .источник
Как показано на странице Удаление стандартных заголовков сервера на странице веб-сайтов Windows Azure , вы можете удалить заголовки следующим образом:
Это удаляет заголовок сервера и X-заголовки.
Это работало локально в моих тестах в Visual Studio 2015.
источник
В Asp.Net Core вы можете редактировать файлы web.config следующим образом:
Вы можете удалить заголовок сервера в настройках Kestrel:
источник
Проверьте этот блог Не используйте код для удаления заголовков. Нестабильно по словам Microsoft
Мой взгляд на это:
источник
Для полноты картины есть другой способ удалить
Server
заголовок, используя regedit.Смотрите этот блог MSDN .
Я бы предпочел найти правильное решение, используя Web.config, но использовать
<rewrite>
его нехорошо, потому что он требует установки модуля перезаписи, и даже тогда он не удалит заголовок, просто опустошит его.источник
Вы можете изменить любой заголовок или что-нибудь еще,
Application_EndRequest()
попробуйте этоисточник
Заголовок X-Powered-By добавляется IIS в ответ HTTP, поэтому его можно удалить даже на уровне сервера с помощью диспетчера IIS:
Вы можете использовать web.config напрямую:
источник