Scott Mitchell proporciona en una publicación de blog soluciones para eliminar encabezados innecesarios .
Como ya se dijo aquí en otras respuestas, para el Serverencabezado, existe la solución del módulo http , o una solución web.config para IIS 10+ , o puede usar URLRewrite en su lugar para borrarlo .
La solución más práctica para una configuración actualizada (IIS 10 +) es usar removeServerHeaderen web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Para X-AspNet-Versiony X-AspNetMvc-Version, proporciona una mejor manera que eliminarlos en cada respuesta: simplemente no generarlos en absoluto.
Úselo enableVersionHeaderpara deshabilitar X-AspNet-Version, en web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Usar MvcHandler.DisableMvcResponseHeaderen el evento .Net Application_Start para deshabilitarX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Y finalmente, elimine en la configuración de IIS el X-Powered-Byencabezado personalizado en web.config.
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Tenga cuidado, si tiene ARR (Application Request Routing), también agregará el suyo propio X-Powered-By, que no se eliminará mediante la configuración de encabezados personalizados. Este tiene que ser eliminado a través del Administrador de IIS, configuración del Editor en la raíz de IIS (no en un sitio): vaya al system.webServer/proxynodo y establezca arrResponseHeaderen false. Después de una IISReset, se tiene en cuenta.
(He encontrado este aquí , excepto que esta publicación trata sobre la antigua forma de configurar las cosas de IIS 6.0).
No olvide que la solución por código de aplicación no se aplica de forma predeterminada al encabezado generado en contenido estático (puede activar el runAllManagedModulesForAllRequestspara cambiar eso, pero hace que todas las solicitudes se ejecuten en la tubería .Net). No es un problema X-AspNetMvc-Versionya que no se agrega en contenido estático (al menos si las solicitudes estáticas no se ejecutan en la canalización .Net).
Nota al margen: cuando el objetivo es ocultar la tecnología utilizada, también debe cambiar los nombres de las cookies .Net estándar ( .ASPXAUTHsi los formularios están activados (use el nameatributo en la formsetiqueta en web.config), ASP.NET_SessionId(use <sessionState cookieName="yourName" />en web.config debajo de la system.webetiqueta), __RequestVerificationToken(cámbielo por código con AntiForgeryConfig.CookieName, pero desafortunadamente no se aplica a la entrada oculta que este sistema genera en el html)).