Scott Mitchell propose dans un article de blog des solutions pour supprimer les en-têtes inutiles .
Comme déjà dit ici dans d'autres réponses, pour l'en- Servertête, il existe la solution de module http , ou une solution web.config pour IIS 10+ , ou vous pouvez utiliser URLRewrite à la place pour le supprimer .
La solution la plus pratique pour une configuration à jour (IIS 10 +) consiste à utiliser removeServerHeaderdans le web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Pour X-AspNet-Versionet X-AspNetMvc-Version, il offre un meilleur moyen que de les supprimer à chaque réponse: simplement ne pas les générer du tout.
Utiliser enableVersionHeaderpour désactiver X-AspNet-Version, dans web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Utilisation MvcHandler.DisableMvcResponseHeaderdans l'événement .Net Application_Start pour la désactivationX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Et enfin, supprimez dans la configuration IIS l'en- X-Powered-Bytête personnalisé dans web.config.
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Attention, si vous avez ARR (Application Request Routing), il ajoutera également le sien X-Powered-By, qui ne sera pas supprimé par les paramètres d'en-têtes personnalisés. Celui-ci doit être supprimé via le gestionnaire IIS, configuration de l'éditeur sur la racine IIS (pas sur un site): accédez au system.webServer/proxynœud et définissez-le arrResponseHeadersur false. Après un IISReset, il est pris en compte.
(J'ai trouvé celui-ci ici , sauf que cet article concerne l'ancienne manière de configurer les choses par IIS 6.0.)
N'oubliez pas que la solution par code d'application ne s'applique pas par défaut à l'en-tête généré sur le contenu statique (vous pouvez activer le runAllManagedModulesForAllRequestspour modifier cela, mais cela entraîne toutes les requêtes à exécuter le pipeline .Net). Ce n'est pas un problème pourX-AspNetMvc-Version car il n'est pas ajouté sur le contenu statique (du moins si les requêtes statiques ne sont pas exécutées dans le pipeline .Net).
Remarque: lorsque l'objectif est de masquer la technologie utilisée, vous devez également changer les noms de cookies standard .Net ( .ASPXAUTHsi l'authentification des formulaires est activée (utiliser l' nameattribut sur la formsbalise dans web.config), ASP.NET_SessionId(utiliser <sessionState cookieName="yourName" />dans web.config sous la system.webbalise), __RequestVerificationToken(le modifier par code avec AntiForgeryConfig.CookieName, mais ne s'applique malheureusement pas à l'entrée cachée que ce système génère dans le html)).