Vraag Server-header verwijderen van statische inhoud in IIS 7/8


Als onderdeel van een poging onze API en site veiliger te maken, verwijder ik headers die informatie over de site lekken.

Voorbeeld voor het strippen van headers:

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>

Global.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");
}

En daarna keren alle oproepen naar de site en de API veiliger headers terug, zoals:

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

Tot nu toe, zo goed. Ik merkte echter in Firebug dat als je naar statische inhoud kijkt (loading.gif, bijvoorbeeld), deze nog steeds de serverkop bevat.

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

Ik veronderstel dat dit op de een of andere manier wordt afgehandeld door IIS, maar kan nergens vinden om die header te verwijderen. Ik heb geprobeerd toe te voegen:

<remove name="Server" /> 

naar de sectie httpProtocol / customHeaders in Web.config, zoals hierboven vermeld. Ik heb ook geprobeerd om in de HTTP Response Headers-sectie van de IIS Manager te gaan en een nep-naam / waarde-paar toe te voegen voor de Server-header. In beide gevallen komt het nog steeds terug

Server: Microsoft-IIS/8.0

bij het laden van afbeeldingen, CSS of JS. Waar / wat heb ik nodig om iets in te stellen om dit te verhelpen?


22
2018-06-25 18:46


oorsprong


antwoorden:


U zou alle verzoeken moeten kunnen forceren om uw beheerde code te doorlopen door deze aan uw webconfiguratie toe te voegen:

<modules runAllManagedModulesForAllRequests="true">

Dan moeten zelfs statische bestanden voldoen aan uw headerregels.


2
2018-06-25 18:51



Dezelfde manier waarop dat is gebeurd dit antwoord, en in deze website:, zou je de volgende stappen moeten volgen:

C #:

namespace MvcExtensions.Infrastructure
{
    public class CustomServerName : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        }

        public void Dispose() { }

        void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            HttpContext.Current.Response.Headers.Remove("Server");
        }
    }
}

web.config:

<system.webServer>
   <modules>
      <add name="CustomHeaderModule" type="MvcExtensions.Infrastructure.CustomServerName" />
   </modules>
</system.webServer>

10
2017-12-02 19:29



Helaas werken beheerde codemodules alleen voor code die door de ASP.NET-pijplijn gaat, terwijl anderen correct hebben gesuggereerd dat het mogelijk is om alle verzoeken via beheerde code af te dwingen, ik persoonlijk vind dit minder dan wenselijk.

Om headers van alle verzoeken te verwijderen, inclusief statische inhoud, die standaard rechtstreeks wordt geserveerd en niet via beheerde code, is het mogelijk om een ‚Äč‚Äčnative-codemodule te gebruiken. Helaas zijn Native-Code-modules iets moeilijker te schrijven omdat ze de Win32-API's gebruiken in plaats van ASP.NET, maar in mijn ervaring zijn ze veel beter geschikt om headers te verwijderen.

De volgende link bevat binaire bestanden en broncode voor een Native-Code-module die kan worden gebruikt om headers te verwijderen. Het vereist geen extra configuratie om de "Server" -headers te verwijderen, maar andere headers om te verwijderen kunnen worden toegevoegd in de IIS-configuratie.

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


6
2018-04-12 11:42



Gebruik de IIS UrlRewrite 2.0 voor het onderdrukken van de Server-antwoordkop. Voeg de volgende code toe in het bestand Web.config

 <system.webServer>
<rewrite>
<outboundRules>
<rule name="Remove RESPONSE_Server" >
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>

https://stackoverflow.com/a/12615970/5810078


1
2018-03-22 13:28



De enige zonder een eenvoudig opgesomde oplossing voor was de "Server" header. Ik kon het lokaal verwijderen in IIS en op een Azure-website door dit toe te voegen aan web.config

<system.webServer>
  <security>
    <requestFiltering removeServerHeader="true" />
  </security>
</system.webServer>

0
2018-03-23 19:31