47 votes

Comment supprimer les en-têtes personnalisés d'IIS comme X-Powered-By : ASP.NET de la réponse ?

Sur IIS 7.0 integrated mode après avoir supprimé tous les en-têtes avec Response.ClearHeaders() IIS ajouterait d'autres en-têtes comme Server y X-Powered-By qui révèle de bonnes informations aux pirates. Comment puis-je arrêter ce comportement (en considérant que je dois toujours ajouter mes en-têtes personnalisés) ?

87voto

eth0 Points 1702

Vous pouvez ajouter ceci à votre Web.Config :

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

Mise à jour : si vous utilisez le framework MVC, je vous recommande également de supprimer l'option X-AspNetMvc-Version y X-AspNet-Version ainsi que les en-têtes. Pour ce faire, il faut définir MvcHandler.DisableMvcResponseHeader = true dans votre Global.asax et <system.web><httpRuntime enableVersionHeader="false" /></system.web> dans votre Web.config respectivement.

14voto

Samuel Neff Points 35554

El X-Powered-By est configuré dans IIS. Sous Windows 7, c'est spécifiquement :

  1. Gestionnaire IIS
  2. NOM DE L'ORDINATEUR > Sites > Site Web par défaut
  3. En-têtes HTTP Respons
  4. Retirer X-Powered-By

Je ne suis pas sûr de ce qui génère le Server de la tête.

5voto

reads0520 Points 498

Pour le mode intégré de IIS7+, eth0 l'a : <customHeaders> dans le web.config. Merci pour cela. Quant à l'en-tête "Server", si vous utilisez MVC, vous pouvez simplement ajouter :

    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
    }

à votre classe MvcApplication dans Global.asax. Sinon, vous pouvez simplement ajouter un module Http personnalisé, gérant l'événement PreSendRequestHeaders, et faire la même chose.

4voto

Sprouter Points 81

Je voudrais ajouter ici que pour les versions ASP.NET Core, où il n'y a plus de fichier web.config, une approche différente est nécessaire.

J'ai fait les ajustements suivants pour supprimer les en-têtes dans ASP.NET Core 2.1 :

Vous pouvez supprimer l'en-tête x-powered-by en remplaçant

<customHeaders>
        <clear />
        <add name="X-Powered-By" value="ASP.NET" />
</customHeaders>

avec

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

dans le fichier applicationhost.config qui se trouve dans le fichier .vs. \config du projet.

L'en-tête du serveur peut être supprimé en ajoutant

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

dans le fichier Program.cs.

2voto

giveme5minutes Points 1155

La réponse suivante comprend une solution complète qui ne nécessite pas URLScan ou un HttpModule personnalisé, et supprime tous les en-têtes connexes que vous mentionnez. Elle fonctionne également sur Azure.

Suppression/masquage/désactivation des en-têtes de réponse HTTP excessifs dans Azure/IIS7 sans UrlScan

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