Usuwanie/ukrywanie / wyłączanie nagłówków odpowiedzi HTTP w usłudze Azure / IIS7 bez UrlScan

Muszę usunąć nadmierne nagłówki (przede wszystkim, aby przejść testy penetracyjne). Poświęciłem czas na szukanie rozwiązań, które wymagają uruchomienia UrlScan, ale są one uciążliwe, ponieważ UrlScan musi być instalowany za każdym razem, gdy uruchamiana jest instancja Azure.

Musi istnieć dobre rozwiązanie dla platformy Azure, które nie wymaga instalowania instalatorów od uruchomienia.cmd.

Rozumiem, że nagłówki odpowiedzi są dodawane w różnych miejsca :

  • Serwer : dodany przez IIS.
  • X-AspNet-Version : dodany przez System.Www.dll w czasie Flush w klasie HttpResponse
  • X-AspNetMvc-Version : dodany przez MvcHandler w systemie.Www.dll.
  • X-Powered-By: dodany przez IIS

Czy Jest jakiś sposób na konfigurację (poprzez web.config itp.?) IIS7, aby usunąć/ukryć / wyłączyć nagłówki odpowiedzi HTTP, aby uniknąć ostrzeżenia "nadmierne nagłówki" w asafaweb.com, bez tworzenia modułu IIS lub instalowania instalatorów, które muszą być uruchamiane przy każdym uruchomieniu wystąpienia platformy Azure?

Author: Community, 2012-10-09

5 answers

Aby usunąć nagłówki odpowiedzi HTTP w usłudze Azure , poniższe zmiany umożliwiają usunięcie nagłówków odpowiedzi HTTP w usłudze Azure bez pisania niestandardowego protokołu HttpModule.

Większość informacji w sieci jest nieaktualna i obejmuje UrlScan(który od tego czasu został zintegrowany z IIS7, ale z opcją RemoveServerHeader=1 usuniętą). Poniżej znajduje się najbardziej schludne rozwiązanie, jakie znalazłem (dzięki ten blog, ta odpowiedź i ten blog razem).

aby usunąć Serwer , przejdź do Global.asax, znajdź / Utwórz Zdarzenie Application_PreSendRequestHeaders i dodaj następujące (dzięki BK i ten blog to również nie zawiedzie na Cassini / local dev):

Edycja Kwiecień 2014: możesz używać zdarzeń PreSendRequestHeaders i PreSendRequestContext z natywnymi modułami IIS, ale nie używaj ich z zarządzanymi modułami, które implementują IHttpModule. Ustawienie tych właściwości może powodować problemy z żądaniami asynchronicznymi . Poprawną wersją jest użycie BeginRequest wydarzenie.

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var application = sender as HttpApplication;
        if (application != null && application.Context != null)
        {
            application.Context.Response.Headers.Remove("Server");
        }
    }

Aby usunąć X-AspNet-Version, W Sieci.config find / create <system.web> and add:

  <system.web>
    <httpRuntime enableVersionHeader="false" />

    ...

Aby usunąć X-AspNetMvc-Version, przejdź do opcji Global.asax, znajdź / Utwórz Zdarzenie Application_Start i dodaj wiersz w następujący sposób:

  protected void Application_Start()
  {
      MvcHandler.DisableMvcResponseHeader = true;
  }

Aby usunąć X-Powered-by , W Sieci.config find / create <system.webServer> and add:

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>

    ...
 133
Author: Nick Evans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:41

MSDN opublikowało Ten artykuł na temat ukrywania nagłówków w witrynach Azure Websites. Możesz teraz ukryć serwer z sieci.config poprzez dodanie wpisu do systemu.webServer

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

VS will marszczy brwi na powyższe jako nieważne. Powyższy link ma kod jako Zdjęcia, trudno znaleźć. Wersja MVC jest nadal ukryta w uruchomieniu aplikacji jak powyżej, tak samo dla wersji X-powered-by I. Net.

 10
Author: AKhooli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-28 17:44:32

Istnieje również pakiet na NuGet, który pomaga Ci to osiągnąć poprzez kilka linijek konfiguracji i bez zmian w kodzie: NWebsec. Dokumenty dotyczące usuwania nagłówków wersji można znaleźć tutaj: https://github.com/NWebsec/NWebsec/wiki/Suppressing-version-headers

Tu jest demoed: http://www.nwebsec.com/HttpHeaders/VersionHeaders (W Azure)

Zastrzeżenie: jestem deweloperem projektu.

 6
Author: klings,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-18 20:52:51

Przewijanie poprzednich odpowiedzi z @giveme5minutes i @AKhooli, ponieważ odnoszą się one do witryn Azure oraz kilku innych elementów, które skaner chce zobaczyć, są to zmiany, które zrobiłem, aby asafaweb był zadowolony z witryny Azure.

Nadal narzeka na to, że plik cookie nagłówka usługi Azure affinity nie jest tylko https, ale affinity jest typem pliku cookie, który i tak chcesz odtworzyć, prawda?

<system.web>
    <compilation debug="false">
    <httpRuntime enableVersionHeader="false" />
    <httpCookies httpOnlyCookies="true" requireSSL="true" />    
    <customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx" />
</system.web>

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-Frame-Options" value="DENY" />
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>
    <security>
      <!--removes Azure headers-->
      <requestFiltering removeServerHeader="true" />
    </security>
</system.webServer>
 3
Author: Timothy Lee Russell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-24 04:07:54

Odpowiedź Nicka Evansa jest idealna, ale...

Jeśli usuniesz te nagłówki w celu bezpieczeństwa , nie zapomnij zmienić ASP.NET Session coockie name ! Ponieważ łatwiej jest odgadnąć używany język lub wersję serwera, gdy widzisz to:

Tutaj wpisz opis obrazka

Aby zmienić nazwę pliku cookie: (bądź kreatywny)

<system.web>
  <sessionState cookieName="PHPSESSID" />
</system.web>
 2
Author: Matthieu Charbonnier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-18 11:00:09