net httpprotocol headers custom asp asp.net-mvc security http-headers

httpprotocol - Cómo eliminar ASP.Net MVC Default HTTP Headers?



custom headers asp net (10)

.NET Core

Para eliminar el encabezado del servidor , dentro del archivo Program.cs , agregue la siguiente opción:

.UseKestrel(opt => opt.AddServerHeader = false)

Para dot net core 1, pon agregar la opción dentro de la llamada .UseKestrel (). Para dot net core 2, agregue la línea después de UseStartup ().

Para eliminar el encabezado X-Powered-By , si se implementa en IIS, edite su web.config y agregue la siguiente sección dentro de la etiqueta system.webServer:

<httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol>

.NET 4.5.2

Para eliminar el encabezado del servidor , dentro de su archivo global.asax agregue lo siguiente:

protected void Application_BeginRequest(object sender, EventArgs e) { string[] headers = { "Server", "X-AspNet-Version" }; if (!Response.HeadersWritten) { Response.AddOnSendingHeaders((c) => { if (c != null && c.Response != null && c.Response.Headers != null) { foreach (string header in headers) { if (c.Response.Headers[header] != null) { c.Response.Headers.Remove(header); } } } }); } }

Pre .NET 4.5.2

Agregue la siguiente clase c # a su proyecto:

public class RemoveServerHeaderModule : IHttpModule { public void Init(HttpApplication context) { context.PreSendRequestHeaders += OnPreSendRequestHeaders; } public void Dispose() { } void OnPreSendRequestHeaders(object sender, EventArgs e) { HttpContext.Current.Response.Headers.Remove("Server"); } }

y luego dentro de su web.config agregue la siguiente sección de <modules>:

<system.webServer> .... <modules> <add name="RemoveServerHeaderModule" type="MyNamespace.RemoveServerHeaderModule" /> </modules>

Sin embargo, tuve un problema donde los subproyectos no pudieron encontrar este módulo. No es divertido.

Eliminando el encabezado X-AspNetMvc-Version

Para eliminar la etiqueta '''' X-AspNetMvc-Version '''', para cualquier versión de .NET, modifique su archivo '''' web.config '''' para incluir:

<system.web> ... <httpRuntime enableVersionHeader="false" /> ... </system.web>

Gracias a Microsoft por hacer esto increíblemente difícil. O tal vez esa era tu intención para que pudieras rastrear las instalaciones de IIS y MVC en todo el mundo ...

Cada página en una aplicación MVC con la que estoy trabajando establece estos encabezados HTTP en las respuestas:

X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 X-AspNetMvc-Version: 2.0

¿Cómo evito que se muestren?


Como se muestra en Eliminación de encabezados de servidor estándar en la página de sitios web de Windows Azure , puede eliminar los encabezados con lo siguiente:

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <httpProtocol> <customHeaders> <clear /> </customHeaders> </httpProtocol> <security> <requestFiltering removeServerHeader="true"/> </security> </system.webServer> <system.web> <httpRuntime enableVersionHeader="false" /> </system.web> </configuration>

Esto elimina el encabezado del servidor y los encabezados X.

Esto funcionó localmente en mis pruebas en Visual Studio 2015.


El "alimentado por" es un encabezado personalizado en IIS. Cambiarlo depende de la versión de IIS que esté utilizando. Para obtener información sobre cómo modificar o eliminar, consulte aquí:

http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders

Para eliminar el encabezado MVC,

En Global.asax, en el evento de Inicio de la aplicación:

MvcHandler.DisableMvcResponseHeader = true;

Pon esto en el web.config deshazte del encabezado X-AspNet-Version:

<system.web> <httpRuntime enableVersionHeader="false" /> </system.web>


El encabezado X-Powered-By es agregado por IIS a la respuesta HTTP, por lo que puede eliminarlo incluso en el nivel del servidor a través del Administrador de IIS:

Puede usar el web.config directamente:

<system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> </system.webServer>


En Asp.Net Core puede editar los archivos web.config así:

<httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol>

Puede eliminar el encabezado del servidor en las opciones de Kestrel:

.UseKestrel(c => { // removes the server header c.AddServerHeader = false; })


Encontré esta configuración en mi web.config que era para un New Web Site... creado en Visual Studio (a diferencia de un New Project... ). Dado que la pregunta establece una aplicación ASP.NET MVC, no es tan relevante, pero sigue siendo una opción.

<system.webServer> <httpProtocol> <customHeaders> <clear /> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> </system.webServer>

Actualización : Además, Troy Hunt tiene un artículo titulado Shhh ... no permita que sus encabezados de respuesta hablen demasiado fuerte con pasos detallados para eliminar estos encabezados, así como un enlace a su herramienta ASafaWeb para buscarlos y otras configuraciones de seguridad.


Para completar, hay otra manera de eliminar el encabezado del Server , usando regedit.

Vea este blog de MSDN .

Cree una entrada DWORD llamada DisableServerHeader en la siguiente clave de Registro y establezca el valor en 1.

HKLM / SYSTEM / CurrentControlSet / Services / HTTP / Parameters

Prefiero encontrar una solución adecuada utilizando Web.config, pero usar <rewrite> no es bueno porque requiere que se instale el módulo de reescritura, y aun así no eliminará realmente el encabezado, simplemente lo vacía.


Puede cambiar cualquier encabezado o cualquier cosa en Application_EndRequest() intente esto

protected void Application_EndRequest() { // removing excessive headers. They don''t need to see this. Response.Headers.Remove("header_name"); }


Tal como se describe en el apartado Cómo ocultar su aplicación web ASP.NET MVC en IIS 7 , puede desactivar el encabezado X-AspNet-Version al aplicar la siguiente sección de configuración a su web.config:

<system.web> <httpRuntime enableVersionHeader="false"/> </system.web>

y elimine el encabezado X-AspNetMvc-Version alterando su Global.asax.cs de la siguiente manera:

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

Como se describe en Encabezados personalizados, puede eliminar el encabezado "X-Powered-By" aplicando la siguiente sección de configuración a su web.config:

<system.webServer> <httpProtocol> <customHeaders> <clear /> </customHeaders> </httpProtocol> </system.webServer>

No hay una manera fácil de eliminar el encabezado de respuesta del "Servidor" mediante la configuración, pero puede implementar un HttpModule para eliminar encabezados HTTP específicos como se describe en Encubrimiento de su aplicación web ASP.NET MVC en IIS 7 y en how-to-remove-server-x-aspnet-version-x-aspnetmvc-version-and-x-powered-by-from-the-response-header-in-iis7 .


También puede eliminarlos agregando código a su archivo global.asax:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e) { HttpContext.Current.Response.Headers.Remove("X-Powered-By"); HttpContext.Current.Response.Headers.Remove("X-AspNet-Version"); HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version"); HttpContext.Current.Response.Headers.Remove("Server"); }