Удаление/скрытие / отключение избыточных заголовков ответов HTTP в Azure / IIS7 без UrlScan
Мне нужно удалить чрезмерное заголовки (главным образом пройти испытание проникания). Я потратил время, глядя на решения, которые включают в себя запуск UrlScan, но они громоздки, как UrlScan необходимо устанавливать каждый раз при запуске экземпляра Azure.
должно быть хорошее решение для Azure, которое не включает развертывание установщиков из запуска.УМК.
Я понимаю, что заголовки ответов добавляются в другой места:
- сервер: добавлено IIS.
- X-AspNet-Version: добавлены системы.Сеть.dll на момент Флеша в HttpResponse class
- X-AspNetMvc-Version: добавлено MvcHandler в системе.Сеть.файл DLL.
- X-Powered-By: добавлено IIS
есть ли способ настроить (через интернет.config etc.?) IIS7 для удаления / скрытия / отключения ответа HTTP заголовки, чтобы избежать предупреждения "чрезмерные заголовки" в asafaweb.com, без создания модуля IIS или развертывания установщиков, которые необходимо запускать каждый раз при запуске экземпляра Azure?
5 ответов:
следующие изменения позволяют удалить эти заголовки ответов HTTP в Azure без написание пользовательского HttpModule.
большая часть информации в сети устарела и включает UrlScan (который с тех пор был интегрирован в IIS7, но с удалены). Ниже приведено самое аккуратное решение, которое я нашел (благодаря этот блог,ответ и этот блог комбинированный.)
удалить сервер перейдите к глобальной.асакс, найди / создайApplication_PreSendRequestHeadersсобытие и добавить следующее (Спасибо BK и этот блог это также не подведет на Cassini / local dev):Edited April 2014: Вы можете использовать события PreSendRequestHeaders и PreSendRequestContext с собственными модулями IIS, но не использовать их с управляемыми модулями, реализующими IHttpModule. Установка этих свойств может причина проблемы с асинхронные запросы. Правильная версия-использовать событие BeginRequest.
protected void Application_BeginRequest(object sender, EventArgs e) { var application = sender as HttpApplication; if (application != null && application.Context != null) { application.Context.Response.Headers.Remove("Server"); } }удалить X-AspNet-Version в интернете.конфиг найти/создать
<system.web>и добавить:<system.web> <httpRuntime enableVersionHeader="false" /> ...удалить X-AspNetMvc-Version перейдите к глобальной.асакс, найди / создай
Application_Startсобытие и добавить строку следующим образом:protected void Application_Start() { MvcHandler.DisableMvcResponseHeader = true; }удалить X-Powered-By в интернете.конфиг найти/создать
<system.webServer>и добавить:<system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> ...
MSDN опубликовано в этой статье о том, как скрыть заголовки на веб-сайтах Azure. Теперь вы можете скрыть сервер из интернета.конфигурация путем добавления записи в систему.webServer
<security> <requestFiltering removeServerHeader ="true" /> </security>против воли хмурится в выше, как будто инвалид. Приведенная выше ссылка имеет код в виде фото, трудно найти. Версия MVC по-прежнему скрыта в запуске приложения, как указано выше, то же самое для x-powered-by и версии .Net.
есть также пакет на NuGet, который поможет вам достичь этого через несколько строк конфигурации и без изменений в коде: NWebsec. Документы по удалению заголовков версий можно найти здесь:https://github.com/NWebsec/NWebsec/wiki/Suppressing-version-headers
Это демо здесь:http://www.nwebsec.com/HttpHeaders/VersionHeaders (в Azure)
отказ от ответственности: я разработчик на проект.
свертывание предыдущих ответов от @giveme5minutes и @AKhooli поскольку они относятся к веб-сайтам Azure плюс несколько других элементов, которые сканер хочет видеть, это изменения, которые я сделал, чтобы сделать ASafaWeb счастливым с сайтом Azure.
Он все еще жалуется на то, что файл cookie заголовка Azure affinity не является только https, но affinity-это тип файла cookie, который вы хотите воспроизвести в любом случае, верно?
<system.web> <compilation debug="false"> <httpRuntime enableVersionHeader="false" /> <httpCookies httpOnlyCookies="true" requireSSL="true" /> <customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx" /> </system.web> <system.webServer> <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="DENY" /> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> <security> <!--removes Azure headers--> <requestFiltering removeServerHeader="true" /> </security> </system.webServer>
ответ Ника Эванса идеален, но...
если вы удалите эти заголовки для безопасность цель, не забудьте изменить
ASP.NET Session coockie name! Потому что легче угадать используемый язык или версию сервера, когда вы видите это:чтобы изменить имя файла cookie: (быть творческим)
<system.web> <sessionState cookieName="PHPSESSID" /> </system.web>
