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.

1voto

Bill M Points 11

J'avais fait des recherches à ce sujet et la méthode URLRewrite fonctionne bien. Je n'arrive pas à trouver le changement bien scripté quelque part. J'ai écrit ce script compatible avec PowerShell v2 et plus et je l'ai testé sur IIS 7.5.

# Add Allowed Server Variable
    Add-WebConfiguration /system.webServer/rewrite/allowedServerVariables -atIndex 0 -value @{name="RESPONSE_SERVER"}
# Rule Name
    $ruleName = "Remove Server Response Header"
# Add outbound IIS Rewrite Rule
    Add-WebConfigurationProperty -pspath "iis:\" -filter "system.webServer/rewrite/outboundrules" -name "." -value @{name=$ruleName; stopProcessing='False'}
#Set Properties of newly created outbound rule 
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/match" -name "serverVariable" -value "RESPONSE_SERVER"
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/match" -name "pattern" -value ".*"
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/action" -name "type" -value "Rewrite"

1voto

Vous pouvez ajouter le code ci-dessous dans le fichier Global.asax.cs

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

1voto

Zaki Mohammed Points 762

La solution proposée ci-dessus en combinaison a fonctionné pour moi avec les changements suivants. J'affiche ici mon scénario et ma solution.

Pour moi, je voulais supprimer les en-têtes suivants :

  • Serveur
  • X-Powered-By
  • X-AspNet-Version
  • X-AspNetMvc-Version

Je les ai ajoutés à mon global.asax :

<%@ Application Language="C#" %>
<script runat="server">
    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
        Response.Headers.Remove("X-Powered-By");
        Response.Headers.Remove("X-AspNet-Version");
        Response.Headers.Remove("X-AspNetMvc-Version");
    }
</script>

L'événement ci-dessus ne se déclenchait pas, j'ai donc ajouté ce qui suit au web.config et cela a fonctionné.

<modules runAllManagedModulesForAllRequests="true" />

et pour supprimer l'en-tête de version, j'ai également ajouté ce qui suit au web.config :

<httpRuntime enableVersionHeader="false" />

Changements dans le web.config :

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
    <system.web>
        <httpRuntime enableVersionHeader="false" />
    </system.web>
</configuration>

J'espère que cela vous aidera !

0voto

TechSavvySam Points 406

J'ai essayé tout ce qui est indiqué ici et sur plusieurs autres fils de discussion similaires de stack overflow.

J'ai été bloqué pendant un moment parce que j'ai oublié de vider le cache de mon navigateur après avoir effectué des changements de configuration. Si vous ne le faites pas et que le fichier se trouve dans votre cache local, il vous sera renvoyé avec les en-têtes originaux (bien sûr).

J'ai réussi à le faire fonctionner en enlever le runAllManagedModulesForAllRequests :

<modules runAllManagedModulesForAllRequests="true">

Cela a permis de supprimer les en-têtes superflus de le plus des fichiers statiques mais je recevais toujours l'en-tête "Server" sur certains fichiers statiques dans mon projet WebAPI dans swagger.

J'ai finalement trouvé et appliqué cette solution et maintenant tous des en-têtes indésirables ont disparu :

https://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85

qui discute de son code qui est ici :

https://github.com/Dionach/StripHeaders/releases/tag/v1.0.5

Il s'agit d'un module en code natif. Il est capable de supprimer l'en-tête du serveur, et non pas simplement effacer la valeur. Par défaut, il supprime :

  • Serveur
  • X-Powered-By
  • X-Aspnet-Version
  • Serveur : Microsoft-HTTPAPI/2.0 -- qui serait renvoyé si "la requête ne parvient pas à être transmise à IIS".

0voto

3dcdr Points 1

IIS 7.5 et peut-être des versions plus récentes ont le texte de l'en-tête stocké dans iiscore.dll

En utilisant un éditeur hexagonal, trouvez la chaîne de caractères et le mot "Server". 53 65 72 76 65 72 après lui et les remplacer par des octets nuls. Dans IIS 7.5, cela ressemble à ceci :

4D 69 63 72 6F 73 6F 66 74 2D 49 49 53 2F 37 2E 35 00 00 00 53 65 72 76 65 72 

Contrairement à d'autres méthodes, cela n'entraîne pas de pénalité de performance. L'en-tête est également supprimé de toutes les demandes, même des erreurs internes.

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