2010-09-09 5 views

Antwort

5

Die Kommentare in Aristos link gibt so eine gute Antwort auf das Warum.

Es läuft auf MS hinaus, die Leute nicht leicht lassen lassen möchten, diesen Wert zu ändern. Ob für Marketing oder andere Zwecke ist offen für Interpretationen.

Eine Sache aus dieser Diskussion ist, dass die Änderung der Server-Header für keine Art von Sicherheit nützlich ist. Es gibt eine Vielzahl von Möglichkeiten, die Sie genau feststellen können, welche Art (und Version) der Webserver-Software ausgeführt wird.

Was uns nur einen Grund gibt: Byte zu speichern. Es sei denn, Sie betreiben eine Website mit extrem hohem Traffic. Wenn Sie eine Website mit hohem Besucheraufkommen betreiben, wird höchstwahrscheinlich bereits ein oder mehrere benutzerdefinierte Module ausgeführt.

+0

Während das Entfernen fast sicher in die Kategorie "Sicherheitstheater" statt "Tatsächliche Sicherheit" fällt, ist es für Penetrationstests sehr üblich, dass ein externer Header wie dieser, der die Systemkonfiguration identifiziert, entfernt wird. –

+3

Ich entwickle mobile Websites, ich stimme dem Sicherheitsargument zu, es ist wirklich keine Sicherheit, aber behaupten, dass das Entfernen für die Platzeinsparung für Kunden relevant ist, deren Bandbreite von unnötigen Daten aufgefressen wird. Lass uns gute Bürger der vernetzten Welt sein und respektiere unsere Nutzer und die Infrastruktur, auf die wir angewiesen sind. –

+0

@NormanH: Ich denke du machst einen guten Punkt. – NotMe

2

Dieses Beispiel ist nicht wirklich entfernen Sie die "Server" -Header, schreiben Sie einfach etwas anderes darauf.

Ein besserer Titel ist "IIS7, wie man einen kundenspezifischen" Server "HTTP-Header sendet". Lesen Sie diesen ähnlichen Artikel http://blogs.technet.com/b/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx

Jetzt, wenn Sie sich fragen, warum auf diese Weise, dies ist nicht die einzige Möglichkeit, können Sie auf Ihrem Web-Server gehen und entfernen Sie es einfach aus den Anfangsbuchstaben.

Wenn Sie sich wundern, warum Sie den IHttpModule + PreSendRequestHeader verwenden, da dies die Art und Weise ist, wie Sie die Header im ersten Teil greifen und zuerst den "Server" Header setzen, bevor ich das tue.

Hoffe diese Hilfe.

+0

Nun, nein. "Wie man einen benutzerdefinierten" Server "http-Header sendet, ist nicht das, wonach ich suche ... Ich weiß bereits, wie das geht. Was ich wissen möchte ist, warum es notwendig ist, es in einem HttpModule für "Server" zu tun, aber nicht für andere Header, die über web.config hinzugefügt/entfernt werden können (''). –

+0

@David das ist etwas anderes, das du fragst (und ich bin mir nicht sicher, in diesem Moment eine Antwort zu geben), die Antwort auf deine Hauptfrage ist diese, die ich geschrieben habe. – Aristos

+0

in der Frage, fragte ich: "' Ich will nur wissen, warum es notwendig ist, [die 'Server' Header] auf diese Weise zu entfernen. "" Danke für Sie, aber zu antworten! –

-1

Response.Headers.Set("Server", "My Awesome Server"); funktioniert gut in der Seite Code-Behind, solange Ihr Anwendungspool auf "Integrated Pipeline Mode" festgelegt ist.

Grundsätzlich ist IPM speziell für den Zweck der IIS-Pipeline in die ASP.NET-Pipeline integriert werden, um diese Art von Sache zu ermöglichen. Siehe Mehrdad Afshari's Answer zur Diskussion.

0

Grundidee jene Header zu entfernen sind als

  1. Aus Sicherheitsgründen folgt. Es wird nicht einfach sein, durch den Angreifer über die Software (Version) festzustellen und Web-Server unterstützt die Website.
  2. Reduzieren Sie die Größe der Daten, die vom Server zum Browser erstellt werden.

Read more about Inspecting Http Response Headers

0

Sie können auch den Wert leeren, indem eine outboundRule in der Datei web.config in IIS Hinzufügen 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> 
Verwandte Themen