Scott Mitchell fornece em uma postagem de blog soluções para remover cabeçalhos desnecessários .
Como já foi dito aqui em outras respostas, para o Server
cabeçalho, existe a solução do módulo http , ou uma solução web.config para IIS 10+ , ou você pode usar URLRewrite para apagá-lo .
A solução mais prática para uma configuração atualizada (IIS 10 +) é usar removeServerHeader
o web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Para X-AspNet-Version
e X-AspNetMvc-Version
, ele fornece uma maneira melhor do que removê-los em cada resposta: simplesmente não gerá-los de forma alguma.
Use enableVersionHeader
para desativar X-AspNet-Version
, em web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Use MvcHandler.DisableMvcResponseHeader
no evento .Net Application_Start para desabilitarX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
E, finalmente, remova na configuração do IIS o X-Powered-By
cabeçalho personalizado em web.config.
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Cuidado, se você tiver ARR (Application Request Routing), ele também adicionará o seu próprio X-Powered-By
, que não será removido pelas configurações de cabeçalhos personalizados. Este deve ser removido através do Gerenciador do IIS, configuração do Editor na raiz do IIS (não em um site): vá para o system.webServer/proxy
nó e defina arrResponseHeader
como false
. Após um IISReset
, ele é levado em consideração.
(Eu encontrei este aqui , exceto que esta postagem é sobre a maneira antiga do IIS 6.0 de configurar as coisas.)
Não se esqueça de que a solução por código de aplicativo não se aplica por padrão ao cabeçalho gerado em conteúdo estático (você pode ativar o runAllManagedModulesForAllRequests
para alterar isso, mas faz com que todas as solicitações executem o pipeline .Net). Não é um problema, X-AspNetMvc-Version
pois não é adicionado ao conteúdo estático (pelo menos se a solicitação estática não for executada no pipeline .Net).
Nota lateral: quando o objetivo é encobrir a tecnologia usada, você também deve alterar os nomes dos cookies .Net padrão ( .ASPXAUTH
se a autenticação de formulários estiver ativada (use o name
atributo na forms
tag em web.config), ASP.NET_SessionId
(use <sessionState cookieName="yourName" />
em web.config na system.web
tag), __RequestVerificationToken
(altere-o por código com AntiForgeryConfig.CookieName
, mas infelizmente não se aplica à entrada oculta que este sistema gera no html)).