Suppression d'en-tête du Serveur de contenu statique dans IIS 7/8
Dans le cadre d'un effort pour rendre notre API et site plus sûr, je suis retrait des en-têtes et de fuites d'informations à propos de ce que le site est en cours d'exécution.
Exemple avant de se dénuder en-têtes:
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 05 Jun 2013 00:27:54 GMT
Content-Length: 3687
Web.config:
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
Mondiale.asax.cs:
protected void Application_PreSendRequestHeaders() {
Response.Headers.Remove("Server");
Response.Headers.Remove("X-AspNet-Version");
Response.Headers.Remove("X-AspNetMvc-Version");
Response.AddHeader("Strict-Transport-Security", "max-age=300");
Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
}
Et après cela, tous les appels vers le site et les API de revenir plus sûres en-têtes, comme suit:
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Date: Wed, 05 Jun 2013 00:27:54 GMT
Content-Length: 3687
Donc bon. Cependant, j'ai remarqué dans Firebug que si vous regardez le contenu statique (loading.gif, par exemple), il ne comprend toujours l'en-tête du serveur.
HTTP/1.1 304 Not Modified
Cache-Control: no-cache
Accept-Ranges: bytes
Etag: "a3f2a35bdf45ce1:0"
Server: Microsoft-IIS/8.0
Date: Tue, 25 Jun 2013 18:33:16 GMT
Je suppose que c'est en cours de traitement par les services IIS en quelque sorte, mais ne peut pas trouver n'importe où de supprimer l'en-tête. J'ai essayé d'ajouter:
<remove name="Server" />
à la httpProtocol/customHeaders section dans le Web.config, comme mentionné ci-dessus. J'ai aussi essayé d'aller dans le Gestionnaire des services internet de la Réponse HTTP en-Têtes de section et l'ajout d'un faux paire nom/valeur pour le Serveur d'en-tête. Dans les deux cas, il renvoie toujours
Server: Microsoft-IIS/8.0
lors du chargement de toutes les images, les CSS ou JS. Où/que dois-je mettre quelque chose pour résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en mesure de forcer toutes les demandes passent par votre code managé en ajoutant ceci à votre webconfig:
Alors, même les fichiers statiques devraient adhérer à votre en-tête de règles.
De la même façon que dans cette réponse, et dans ce site internet:, vous devez utiliser les étapes suivantes:
C#:
Web.config:
PreSendRequest
événement. Donc, je pense que @hexpoint 's réponse est mieux (je viens de tester et cela a fonctionné comme un charme) stackoverflow.com/a/49457128/3569421Malheureusement réussi les modules de code ne fonctionne que pour du code en passant par la ASP.NET pipeline, tandis que d'autres ont correctement a suggéré qu'il est possible de forcer toutes les demandes via le code managé, personnellement, je pense que c'est moins que souhaitable.
Afin de supprimer les en-têtes de toutes les demandes, y compris du contenu statique, qui par défaut est servi directement et non via le code managé, il est possible d'utiliser un Code Natif module. Malheureusement, le Code Natif modules sont un peu plus difficile à écrire, car ils utilisent l'Api win32, plutôt que de ASP.NET cependant, dans mon expérience, ils sont beaucoup plus adaptée à la suppression des en-têtes.
Le lien suivant a des binaires et le code source en Code Natif module qui peut être utilisé pour supprimer des en-têtes. Il ne nécessite aucune configuration supplémentaire pour supprimer le "Serveur" en-têtes, mais d'autres en-têtes à supprimer peut être ajouté dans la configuration IIS.
http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85
Le seul sans un facile répertoriés solution était le "Serveur" en-tête. J'ai été en mesure de supprimer localement dans IIS et dans l'Azur du site web par l'ajout de cette dans le web.config
Utiliser IIS UrlRewrite 2.0 pour le découpage de la réponse du Serveur en-tête. Ajoutez le code suivant dans le Web.fichier de configuration
https://stackoverflow.com/a/12615970/5810078