122 votes

Supprimer l'en-tête de réponse du serveur IIS7

Existe-t-il un moyen de supprimer l'en-tête de réponse "Server" de IIS7 ? Il existe des articles montrant que l'utilisation de HttpModules permet de réaliser la même chose. Cela sera utile si nous n'avons pas de droits d'administration sur le serveur. De plus, je ne veux pas écrire de filtre ISAPI.

J'ai des droits d'administration sur mon serveur. Je ne veux donc pas faire les choses ci-dessus. Alors, s'il vous plaît, aidez-moi à faire la même chose.

5voto

Richard Deeming Points 9808

Essayez de régler le HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\DisableServerHeader à une entrée de registre REG_DWORD de 1 .

4voto

eddiegroves Points 4991

UrlScan peut également supprimer l'en-tête du serveur en utilisant AlternateServerName= sous [options] .

2voto

techtician Points 11

Suivi de Réponse de eddiegroves Selon la version d'URLScan, vous préférerez peut-être plutôt RemoveServerHeader=1 sous [options] .

Je ne sais pas exactement dans quelle version d'URLScan cette option a été ajoutée, mais elle est disponible dans la version 2.5 et les suivantes.

2voto

Pawel Points 1

J'ai trouvé un article qui explique pourquoi nous devons à la fois modifier le registre et utiliser un outil tel que UrlScan pour configurer correctement le système IIS. Je l'ai suivi sur nos serveurs et cela fonctionne : http://blogs.msdn.com/b/varunm/archive/2013/04/23/remove-unwanted-http-response-headers.aspx . Si vous utilisez uniquement UrlScan sans modifier le registre, pendant la période où vous arrêtez le service World Wide Publishing, votre serveur renverra la réponse http du fichier HTTP.sys. Voici également les pièges courants de l'utilisation de l'outil UrlScan : http://msdn.microsoft.com/en-us/library/ff648552.aspx#ht_urlscan_008

2voto

xautau Points 76

Dans IIS 10, nous utilisons une solution similaire à l'approche de Drew, à savoir :

using System;
using System.Web;

namespace Common.Web.Modules.Http
{
    /// <summary>
    /// Sets custom headers in all requests (e.g. "Server" header) or simply remove some.
    /// </summary>
    public class CustomHeaderModule : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        }

        public void Dispose() { }

        /// <summary>
        /// Event handler that implements the desired behavior for the PreSendRequestHeaders event,
        /// that occurs just before ASP.NET sends HTTP headers to the client.
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            //HttpContext.Current.Response.Headers.Remove("Server");
            HttpContext.Current.Response.Headers.Set("Server", "MyServer");
        }
    }
}

Et bien sûr, ajoutez une référence à cette dll dans votre ou vos projets et aussi au module dans la ou les configurations que vous voulez :

<system.webServer>
    <modules>
      <!--Use http module to remove/customize IIS "Server" header-->
      <add name="CustomHeaderModule" type="Common.Web.Modules.Http.CustomHeaderModule" />
    </modules>
</system.webServer>

NOTE IMPORTANTE1 : Cette solution nécessite un pool d'applications défini comme intégré ;

NOTE IMPORTANTE2 : Toutes les réponses de l'application web seront affectées par cette mesure (css et js inclus) ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X