Pourquoi ne peut pas le « serveur » Réponse en-tête est supprimé par web.config dans IIS7?

StackOverflow https://stackoverflow.com/questions/3678222

  •  01-10-2019
  •  | 
  •  

Question

Réponse Supprimer le serveur tête IIS7

Je sais que comment pour supprimer l'en-tête de réponse HTTP Server avec un module basé sur le lien ci-dessus.

Je veux juste savoir pourquoi il est nécessaire de le retirer de cette façon.

Était-ce utile?

La solution

Les commentaires lien Aristos donne aussi bien une réponse à la Pourquoi.

Il se résume à MS ne voulant pas laisser facilement les modifier cette valeur. Que ce soit pour la commercialisation ou à d'autres fins est ouvert à l'interprétation.

Une chose à retenir de cette discussion est que la modification l'en-tête du serveur est pas utile pour toute sorte de sécurité. Il y a une myriade de façons que vous pouvez détecter exactement ce genre (et version) du logiciel serveur Web est en cours d'exécution.

Ce qui nous laisse avec une seule raison de le faire: économiser des octets. À moins que vous utilisez un site de trafic extrêmement élevé ce n'est pas une préoccupation. Si vous utilisez un site à fort trafic, alors vous êtes plus que probablement déjà en cours d'exécution d'un ou plusieurs modules personnalisés.

Autres conseils

Cet exemple n'est pas vraiment supprimer l'en-tête « serveur », il suffit d'écrire quelque chose d'autre sur elle.

Un meilleur titre est " IIS7 comment envoyer une coutume "serveur" http tête ". Lisez cet article similaire http://blogs.technet.com/b/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header .aspx

Maintenant, si vous demandez pourquoi cette façon, ce n'est pas la seule façon, vous pouvez aller à votre serveur Web et juste retirer des en-têtes des initiales.

Si vous demandez, pourquoi utiliser le IHttpModule + PreSendRequestHeader, parce que c'est la façon dont vous prenez les en-têtes sur la première partie et le lieu d'abord l'en-tête « serveur » avant iis faire.

Hope cette aide.

Vous pouvez aussi vider la valeur en ajoutant un outboundRule dans le fichier web.config dans IIS 7 +:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <outboundRules rewriteBeforeCache="true">
                <rule name="Remove Server header">
                    <match serverVariable="RESPONSE_Server" pattern=".+" />
                    <action type="Rewrite" value="" />
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

L'idée de base de la suppression de ces en-tête sont comme suit

  1. Pour des raisons de sécurité. il ne sera pas facile de déterminer par l'attaquant sur le logiciel (version) et le serveur Web soutient le site.
  2. réduire la taille des produits de données à la fin du serveur au navigateur.

En savoir plus sur en-têtes de réponse Http Inspecter

La chose suivante fonctionne pour moi:

Dans IIS 10.0 (Windows Server 2016/2019), vous pouvez supprimer l'en-tête du serveur en configurant requestFiltering dans votre web.config system.webServer noeud:

<security>
  <requestFiltering removeServerHeader ="true" />
</security>

De cette façon, vous ne devez pas jouer avec des règles complexes de ré-écriture sortant.

Pour supprimer Powered-By-X de ASP.NET tête vous devez toujours la section customHeaders comme mentionné ci-dessus.

source: https: //www.saotn. org / remove-iis-server-version http-réponse en-tête /

Response.Headers.Set("Server", "My Awesome Server"); fonctionne très bien dans la page code-behind, tant que votre pool d'applications est réglé sur "Mode Pipeline intégré".

En gros, l'IPM est spécifiquement dans le but d'avoir le pipeline IIS est intégré avec le pipeline ASP.NET pour permettre ce genre de chose à faire. Voir Réponse de Mehrdad Afshari pour la discussion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top