Eliminar el encabezado de respuesta del servidor IIS 8.0/8.5
http-headers httpresponse (8)
Ahora es posible eliminar el encabezado del Server
de web.config
partir de IIS 10.0:
<security>
<requestFiltering removeServerHeader ="true" />
</security>
Más detalles sobre cómo eliminar todos los encabezados no deseados / innecesarios se pueden encontrar here .
Tenga en cuenta que esto oculta el encabezado del servidor de la "aplicación", al igual que todos los otros enfoques. Si, por ejemplo, alcanza una página predeterminada o una página de error generada por el propio IIS o ASP.NET fuera de su aplicación, estas reglas no se aplicarán. Así que, idealmente, deberían estar en el nivel de raíz en IIS y ese umbral puede dejar algunas respuestas de error al IIS en sí.
¿Cómo podemos eliminar la respuesta del encabezado del servidor en IIS 8.0 / 8.5?
Mi informe actual del servidor: Microsoft-IIS/8.0
Microsoft-IIS/8.5
Para IIS 7.0 utilicé URLScan 3.1, sin embargo, esto solo es compatible con IIS 7.0 y no con la versión 8.x
Desafortunadamente, la mayoría de las recomendaciones que encontrará en línea para eliminar el encabezado "Servidor" en IIS no funcionarán para IIS 8.0 y 8.5. He encontrado la única opción que funciona, y en mi opinión, también la mejor, es utilizar un módulo de código nativo de IIS.
Los módulos de código nativo difieren de los módulos administrados más comunes, ya que se escriben utilizando las API de win32 en lugar de ASP.NET. Esto significa que funcionan para todas las solicitudes (incluidas las páginas y las imágenes estáticas) en lugar de solo las solicitudes pasadas a través de la canalización de ASP.NET. Al usar un módulo de código nativo, es posible eliminar los encabezados no deseados al final de la solicitud, lo que significa que puede eliminar los encabezados (incluido el encabezado "Servidor") independientemente de dónde se hayan establecido.
Los binarios y el código fuente de un módulo de código nativo de ejemplo para eliminar encabezados en IIS 7.0 a 8.5 están disponibles en el siguiente artículo.
http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85
En el Administrador de IIS, en el nivel del servidor, vaya a la vista Características. Haga clic en Encabezados de respuesta HTTP. Puede agregar / eliminar encabezados allí. También puede administrar los encabezados de respuesta a nivel de sitio también.
Esto es muerto simple. Solo crea un módulo personalizado:
public class HeaderStripModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
}
public void Dispose(){}
}
Y luego regístrese en web.config
o applicationHost.config
si desea una implementación en toda la máquina.
<system.webServer>
<modules>
<add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" />
</modules>
</system.webServer>
Hay otra solución y, en mi opinión, esta es la mejor y más segura.
Puede utilizar el módulo UrlRewrite creado por Microsoft. El módulo Url Rewrite redirige su url y también puede cambiar el nombre de su servidor IIS en el encabezado de respuesta.
No tienes que usar la propiedad de redireccionamiento. Puede usar solo cambiar el valor del encabezado del servidor.
Aquí están los pasos:
Primero, descargue el módulo UrlRewrite desde este enlace: http://www.iis.net/downloads/microsoft/url-rewrite e instálelo en su servidor IIS. Después de eso, reinicie IIS con este comando en la consola cmd.
iisreset /restart
Agregue el siguiente elemento al archivo de configuración web bajo la etiqueta
<system.WebServer>
. Puede escribir cualquier cosa en el elemento de valor como nombre de servidor.Finalmente cambiamos el nombre de la versión de IIS en el encabezado de los datos. Reinicie IIS de nuevo. a través de la consola cmd.
Bono: si desea probar su sitio web para ver si está funcionando o no ... Puede usar el complemento "HttpRequester" de Mozilla Firefox. para este complemento: https://addons.mozilla.org/En-us/firefox/addon/httprequester/
PS: Lo probé y funcionó para mí en el servidor IIS. No se ha creado en el servidor de IIS temproray creado por Visual Studio.
Para el problema anterior, agregue el siguiente código en Global.asax.cs
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
Response.AddHeader("Sample1", "Value1");
}
Se resolvió el problema después de tanto navegar.
Simplemente use la etiqueta transparente en el segmento de encabezados personalizados en web.config:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-Custom-Name1" value="MyCustomValue1" />
<add name="X-Custom-Name2" value="MyCustomValue2" />
</customHeaders>
</httpProtocol>
</system.webServer>
Para encabezados dinámicos, puedes usar este código en Global.ascx:
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
Response.AddHeader("Sample1", "Value1");
}
URLScan se ha interrumpido a partir de IIS 7.5, ya que se supone que sus funcionalidades están disponibles a través de la opción de "filtro de solicitud" (característica agregada en IIS 7.5).
Pero la opción ''Eliminar el encabezado del servidor'' de URLScan no parece tener ningún equivalente en "filtrado de solicitudes".
Como dijimos en esta respuesta y en esta pregunta , puede vaciar el Server
con URLRewrite en su lugar, que permanece disponible en IIS 8 / 8.5 (con alguna actualización necesaria para tener su IU en la consola de administración de IIS).
Resulta que, al mirar este blog , URLScan aún puede instalarse en IIS 8 / 8.5, si la falta de soporte oficial no es un problema.
No me he probado. Aquí están los pasos:
- Instale la compatibilidad de IIS 6 Metabase (si no está ya allí)
- Instale Filtros Isapi (si no está ya allí)
- Instale URLScan (desde el instalador descargable, no desde el instalador de la plataforma web)
- Configure URLScan a través de su archivo
ini
(de forma predeterminada enC:/Windows/System32/inetsrv/urlscan
)
Tal vez debería hacerse algún iisreset
o incluso un reinicio. URLScan debe ser visible en IIS entre los filtros Isapi