Removendo / Ocultando / Desativando headers de resposta HTTP excessivos no Azure / IIS7 sem o UrlScan

Preciso remover headers excessivos (principalmente para passar no teste de penetração). Eu gastei tempo procurando soluções que envolvem a execução do UrlScan, mas elas são complicadas, pois o UrlScan precisa ser instalado sempre que uma instância do Azure for iniciada .

Deve haver uma boa solução para o Azure que não envolva a implantação de instaladores de startup.cmd.

Eu entendo que os headers de resposta são adicionados em lugares diferentes :

  • Servidor : adicionado pelo IIS.
  • X-AspNet-Version : adicionado por System.Web.dll no momento do Flush na class HttpResponse
  • X-AspNetMvc-Version : Adicionado por MvcHandler em System.Web.dll.
  • X-Powered-By : adicionado pelo IIS

Existe alguma maneira de configurar (via web.config etc.?) IIS7 para remover / ocultar / desativar os headers de resposta HTTP para evitar o aviso “Cabeçalhos excessivos” em asafaweb.com , sem criar um módulo IIS ou implantar instaladores que precisam ser executado sempre que uma instância do Azure for iniciada?

As alterações a seguir permitem que você remova esses headers de resposta HTTP no Azure sem escrever um HttpModule personalizado.

A maioria das informações na rede está desatualizada e envolve o UrlScan (que já foi integrado ao IIS7, mas com a opção RemoveServerHeader=1 removida). Abaixo está a solução mais legal que eu encontrei (graças a este blog , esta resposta e este blog combinados).

Para remover o Servidor , vá para Global.asax, encontre / crie o evento Application_PreSendRequestHeaders e adicione o seguinte (graças a BK e a este blog, isso também não falhará no Cassini / dev local):

Editado em abril de 2014: Você pode usar os events PreSendRequestHeaders e PreSendRequestContext com módulos nativos do IIS, mas não os use com módulos gerenciados que implementam o IHttpModule. Definir essas propriedades pode causar problemas com solicitações assíncronas . A versão correta é usar o evento 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"); } } 

Para remover o X-AspNet-Version , no web.config, localize / crie e adicione:

    ... 

Para remover o X-AspNetMvc-Version , vá para Global.asax, localize / crie o evento Application_Start e adicione uma linha como a seguir:

  protected void Application_Start() { MvcHandler.DisableMvcResponseHeader = true; } 

Para remover o X-Powered-By , no web.config, localize / crie e adicione:

        ... 

MSDN publicou este artigo sobre como ocultar headers em sites do Azure. Agora você pode ocultar o servidor do web.config adicionando uma input ao system.webServer

    

VS vai franzir a testa acima como inválido embora. O link acima tem código como fotos, difíceis de encontrar. A versão MVC ainda está oculta no início do aplicativo, como na versão x-powered-by e .Net.

Há também um pacote no NuGet que ajuda você a conseguir isso através de algumas linhas de configuração e sem alterações no código: NWebsec. Os documentos sobre como remover headers de versão podem ser encontrados aqui: https://github.com/NWebsec/NWebsec/wiki/Suppressing-version-headers

É demoed aqui: http://www.nwebsec.com/HttpHeaders/VersionHeaders (no Azure)

Disclaimer: Eu sou o desenvolvedor do projeto.

Revisando as respostas anteriores de @ giveme5minutes e @AKhooli relacionadas a sites do Azure, além de alguns outros itens que o mecanismo de varredura deseja ver, estas são as alterações que fiz para deixar o ASafaWeb feliz com um site do Azure.

Ele ainda reclama que o cookie de header de afinidade do Azure não é apenas https, mas a afinidade é o tipo de cookie que você deseja reproduzir de qualquer maneira, certo?

                   

A resposta de Nick Evans é perfeita, mas …

Se você remover esses headers por uma finalidade de segurança , não se esqueça de alterar o ASP.NET Session coockie name do ASP.NET Session coockie name ! Porque é mais fácil adivinhar o idioma usado ou a versão do servidor quando você vê isso:

insira a descrição da imagem aqui

Para alterar o nome do cookie: (seja criativo)