Preciso remover cabeçalhos excessivos (principalmente para passar no teste de penetração). Passei um 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 é 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 cabeçalhos de resposta são adicionados em lugares diferentes :
- Servidor : adicionado pelo IIS.
- Versão X-AspNet : adicionado por System.Web.dll no momento de Flush na classe HttpResponse
- X-AspNetMvc-Version : adicionado por MvcHandler em System.Web.dll.
- X-Powered-By : adicionado por IIS
Existe alguma maneira de configurar (via web.config etc.?) O IIS7 para remover / ocultar / desabilitar os cabeçalhos 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 é iniciada?
fonte
O MSDN publicou este artigo sobre como ocultar cabeçalhos em sites do Azure. Agora você pode ocultar o servidor de web.config adicionando uma entrada a system.webServer
<security> <requestFiltering removeServerHeader ="true" /> </security>
VS irá olhar para o acima como inválido. 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 acima, o mesmo para a versão x-powered-by e .Net.
fonte
Também existe um pacote no NuGet que ajuda você a conseguir isso por meio de algumas linhas de configuração e nenhuma alteração no código: NWebsec. Os documentos sobre como remover cabeçalhos de versão podem ser encontrados aqui: https://github.com/NWebsec/NWebsec/wiki/Suppressing-version-headers
É demonstrado aqui: http://www.nwebsec.com/HttpHeaders/VersionHeaders (no Azure)
Isenção de responsabilidade: sou o desenvolvedor do projeto.
fonte
A resposta de Nick Evans é perfeita, mas ...
Se você remover esses cabeçalhos por motivos de segurança , não se esqueça de alterar o
ASP.NET Session coockie name
! Porque é mais fácil adivinhar o idioma usado ou a versão do servidor quando você vê isto:Para alterar o nome do cookie: (seja criativo)
<system.web> <sessionState cookieName="PHPSESSID" /> </system.web>
fonte
Reunindo as respostas anteriores de @ giveme5minutes e @AKhooli, já que se relacionam aos sites do Azure, além de alguns outros itens que o scanner deseja ver, essas são as alterações que fiz para deixar o ASafaWeb feliz com um site do Azure.
Ele ainda reclama sobre o cookie de cabeçalho de afinidade do Azure não ser apenas https, mas afinidade é o tipo de cookie que você deseja que seja reproduzido de qualquer maneira, certo?
<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>
fonte