web-dev-qa-db-de.com

Entfernen Sie den Server Response Header IIS 8,0/8,5

Wie können wir die Antwort des Server-Headers in IIS 8.0/8.5 entfernen? 
Mein aktueller Serverbericht: Microsoft-IIS/8.0Microsoft-IIS/8.5
Für IIS 7.0 habe ich URLScan 3.1 verwendet, dies wird jedoch nur für IIS 7.0 und nicht für 8.x unterstützt

23
BastianW

Es gibt eine andere Lösung, und meiner Meinung nach ist diese Lösung die beste und sicherste. 

Sie können das von Microsoft erstellte UrlRewrite-Modul verwenden. Das Url Rewrite-Modul leitet Ihre URL um und kann Ihren IIS Servernamen im Antwortheader ändern. 

Sie müssen keine Umleitungseigenschaft verwenden. Sie können den Serverheaderwert einfach ändern. 

Hier sind die Schritte: 

  1. Laden Sie zunächst das UrlRewrite-Modul von diesem Link herunter: http://www.iis.net/downloads/Microsoft/url-rewrite und installit auf Ihrem IIS Server. Danach starten Sie IIS mit diesem Befehl auf der Konsole "cmd " Neu

    iisreset /restart
    
  2. Fügen Sie der Web-Konfigurationsdatei unter dem Tag <system.WebServer> den folgenden Eintrag hinzu. Sie können alles als Servernamen in das Value-Element schreiben.

    enter image description here

  3. Schließlich haben wir den IIS Versionsnamen im Header der Daten geändert. Starten Sie erneut IIS =. über die cmd-Konsole.

  4. Bonus: Wenn Sie Ihre Website testen möchten, um zu sehen, ob sie funktioniert oder nicht ... Sie können das Mozilla Firefox-Plugin "HttpRequester" verwenden. für dieses Plugin: https://addons.mozilla.org/En-us/firefox/addon/httprequester/

PS: Ich habe es getestet und es funktionierte für mich auf dem IIS Server. Nicht auf dem Server wurde vom Visual Studio ein temproray IIS Server erstellt.

16
Mahmut EFE

Leider funktionieren die meisten Empfehlungen, die Sie online finden, wenn Sie den "Server" -Header in IIS entfernen, für IIS 8.0 und 8.5 nicht. Ich habe die einzige funktionierende Option gefunden, und meiner Meinung nach auch die beste ist die Verwendung eines IIS Native-Code-Moduls. 

Native-Code-Module unterscheiden sich von den allgemeineren verwalteten Modulen, da sie unter Verwendung der win32-APIs anstelle von ASP.NET geschrieben werden. Dies bedeutet, dass sie für alle Anforderungen (einschließlich statischer Seiten und Bilder) und nicht nur für Anforderungen in der ASP.NET-Pipeline funktionieren. Mit einem Native-Code-Modul können unerwünschte Header ganz am Ende der Anforderung entfernt werden. Dies bedeutet, dass Sie Header (einschließlich des "Server" -Headers) unabhängig von ihrem Platz entfernen können. 

Binaries und Quellcode eines Native-Code-Beispielmoduls zum Entfernen von Headern in IIS 7.0 bis 8.5 finden Sie im folgenden Artikel. 

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

8
ph1ll

Verwenden Sie einfach ein klares Tag im benutzerdefinierten Header-Segment in web.config:

<system.webServer>
   <httpProtocol>
      <customHeaders>
           <clear />
            <add name="X-Custom-Name1" value="MyCustomValue1" />
            <add name="X-Custom-Name2" value="MyCustomValue2" />
      </customHeaders>
   </httpProtocol>
</system.webServer>

Für dynamische Header können Sie diesen Code in Global.ascx verwenden: 

protected void Application_PreSendRequestHeaders() 
   {
       Response.Headers.Remove("Server");
       Response.AddHeader("Sample1", "Value1");
   }
3

Das ist ganz einfach. Erstellen Sie einfach ein benutzerdefiniertes Modul:

public class HeaderStripModule : IHttpModule
{
    public void Init(HttpApplication application)
    {
        application.PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
    }

    public void Dispose(){}
}

Registrieren Sie sich dann in web.config oder applicationHost.config, wenn Sie eine maschinenweite Implementierung wünschen.

<system.webServer>
  <modules>
      <add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" />
  </modules>
</system.webServer>
1
rism

URLScan wurde ab IIS 7.5 eingestellt, da dessen Funktionen über die Option "Anforderungsfilterung" verfügbar sein sollen (Funktion in IIS 7.5 hinzugefügt).

Die Option "Serverheader entfernen" des URLScan sieht jedoch nicht so aus, als hätte sie bei der "Anforderungsfilterung" eine Entsprechung.

Wie unter this answer und this answer to you frage gesagt, können Sie stattdessen die Server mit URLRewrite leeren, die auf IIS 8/8.5 verfügbar ist (mit einigen Aktualisierungen für ihre Benutzeroberfläche in der Verwaltungskonsole IIS).

Wenn Sie dieses Blog betrachten, stellt sich heraus, dass URLScan immer noch auf IIS 8/8.5 installiert werden kann, wenn es keinen offiziellen Support gibt.

Ich habe mich nicht getestet. Hier sind die Schritte:

  • IIS installieren 6 Metabase-Kompatibilität (falls nicht bereits vorhanden)
  • Installiere Isapi-Filter (falls nicht bereits vorhanden)
  • Installieren Sie URLScan (vom herunterladbaren Installationsprogramm, nicht vom Webplattform-Installationsprogramm).
  • Konfigurieren Sie URLScan über die ini-Datei (standardmäßig in C:\Windows\System32\inetsrv\urlscan).

Möglicherweise sollte etwas iisreset oder sogar ein Neustart durchgeführt werden. URLScan sollte in IIS unter den Isapi-Filtern sichtbar sein

0
Frédéric

Es ist jetzt möglich, Server-Header von web.config ausgehend von IIS 10.0 zu entfernen:

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

Weitere Informationen zum Entfernen aller unerwünschten/nicht benötigten Header finden Sie hier .

Bitte beachten Sie, dass dies den Serverheader wie auch alle anderen Ansätze vor der "Anwendung" verbirgt. Wenn Sie z. eine Standardseite oder eine Fehlerseite erreichen, die von IIS selbst oder ASP.NET außerhalb Ihrer Anwendung generiert wird, gelten diese Regeln nicht. Idealerweise sollten sie sich in IIS auf der Wurzelebene befinden, und diese Schwelle kann einige Fehlerantworten auf IIS selbst hinterlassen.

Es gibt ein bug in IIS 10, durch das der Header manchmal sogar mit config angezeigt wird. Es sollte jetzt behoben sein, aber IIS/Windows muss aktualisiert werden.

0

Fügen Sie für das obige Problem den folgenden Code in Global.asax.cs hinzu

protected void Application_PreSendRequestHeaders() 
   {
       Response.Headers.Remove("Server");
       Response.AddHeader("Sample1", "Value1");
   }

Es wurde das Problem behoben, nachdem so viel surfen.

0
Girish Arora