web-dev-qa-db-fra.com

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

Dans IIS 7.0integrated mode Après avoir supprimé tous les en-têtes avec Response.ClearHeaders() IIS ajouterait d'autres en-têtes comme Server et X-Powered-By Qui révèle de bonnes informations aux pirates. Comment puis-je arrêter ce comportement (pensez que j'ai encore besoin d'ajouter mes en-têtes personnalisés)?

42
Xaqron

Vous pouvez l'ajouter à 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 recommanderais également de supprimer le X-AspNetMvc-Version et X-AspNet-Version en-têtes également. Pour ce faire, définissez MvcHandler.DisableMvcResponseHeader = true dans votre Global.asax fichier et <system.web><httpRuntime enableVersionHeader="false" /></system.web> dans votre Web.config respectivement.

74
eth0

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

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

Je ne sais pas ce qui génère l'en-tête Server.

13
Samuel Neff

Pour le mode intégré IIS7 +, eth0 l'a: <customHeaders> tag dans web.config. Merci pour ça. Quant à l'en-tête "Serveur", 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érer l'événement PreSendRequestHeaders et faire la même chose.

5
reads0520

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 effectué 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 trouvé dans le dossier .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.

2
Sprouter

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 associés que vous mentionnez. Il fonctionne également sur Azure.

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

2
Nick Evans

URLScan peut être utilisé pour supprimer l'en-tête du serveur ou configurer un autre en-tête du serveur, http://learn.iis.net/page.aspx/938/urlscan-3-reference/

Mais cela n'empêche jamais vraiment un pirate de savoir ce que vous utilisez en fait. Il existe évidemment d'autres façons de détecter les informations de votre serveur.

1
Lex Li

Vous pouvez utiliser appcmd.exe (IIS 7 et supérieur) pour effectuer votre travail. Le script sera comme ceci:

C:\Windows\System32\inetsrv\appcmd.exe set config -section:system.webserver/httpProtocol /-customHeaders.["name='X-Powered-By'"] /commit:apphost  

/commit:apphost: Cela valide les paramètres de configuration dans la section d'emplacement appropriée du fichier ApplicationHost.config.

Je crée généralement un fichier batch de tous ces scripts que j'exécute sur le serveur Web après l'installation de l'application.

Pour les applications ASP.NET MVC, l'approche est différente et vous pouvez vous référer aux autres réponses données ici.

1
Saurabh R S