Scott Mitchell proporciona en una publicación de blog soluciones para eliminar encabezados innecesarios .
Como ya se dijo aquí en otras respuestas, para el Server
encabezado, 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 removeServerHeader
en web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Para X-AspNet-Version
y X-AspNetMvc-Version
, proporciona una mejor manera que eliminarlos en cada respuesta: simplemente no generarlos en absoluto.
Úselo enableVersionHeader
para deshabilitar X-AspNet-Version
, en web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Usar MvcHandler.DisableMvcResponseHeader
en el evento .Net Application_Start para deshabilitarX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Y finalmente, elimine en la configuración de IIS el X-Powered-By
encabezado 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/proxy
nodo y establezca arrResponseHeader
en 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 runAllManagedModulesForAllRequests
para cambiar eso, pero hace que todas las solicitudes se ejecuten en la tubería .Net). No es un problema X-AspNetMvc-Version
ya 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 ( .ASPXAUTH
si los formularios están activados (use el name
atributo en la forms
etiqueta en web.config), ASP.NET_SessionId
(use <sessionState cookieName="yourName" />
en web.config debajo de la system.web
etiqueta), __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)).