Scott Mitchell bietet in einem Blogbeitrag Lösungen zum Entfernen unnötiger Header .
Wie bereits in anderen Antworten erwähnt, gibt es für den ServerHeader die http- Modullösung oder eine web.config-Lösung für IIS 10+ , oder Sie können stattdessen URLRewrite verwenden, um sie auszublenden .
Die praktischste Lösung für ein aktuelles Setup (IIS 10 +) ist die Verwendung removeServerHeaderin der Datei web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Für X-AspNet-Versionund X-AspNetMvc-Versionbietet er einen besseren Weg, als sie bei jeder Antwort zu entfernen: sie einfach überhaupt nicht zu generieren.
Verwenden enableVersionHeaderzum Sperren X-AspNet-Version, in web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Verwenden Sie MvcHandler.DisableMvcResponseHeaderin Fall .Net Application_Start zum SperrenX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Entfernen Sie schließlich in der IIS-Konfiguration den X-Powered-Bybenutzerdefinierten Header in web.config.
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Beachten Sie, dass bei ARR (Application Request Routing) auch ein eigenes ARR hinzugefügt wird X-Powered-By, das durch benutzerdefinierte Header-Einstellungen nicht entfernt wird. Dieser muss über den IIS-Manager, Editor-Konfiguration im IIS-Stammverzeichnis (nicht auf einer Site) entfernt werden: Gehen Sie zum system.webServer/proxyKnoten und setzen Sie arrResponseHeaderauf false. Nach einem IISResetwird es berücksichtigt.
(Ich habe diesen hier gefunden , außer dass es in diesem Beitrag um die alte IIS 6.0-Methode zum Konfigurieren von Dingen geht.)
Vergessen Sie nicht, dass die Lösung nach Anwendungscode nicht standardmäßig für Header gilt, die für statischen Inhalt generiert wurden (Sie können das aktivieren, runAllManagedModulesForAllRequestsum dies zu ändern, aber alle Anforderungen werden ausgeführt .Net-Pipeline). Dies ist kein Problem, X-AspNetMvc-Versionda es nicht zu statischen Inhalten hinzugefügt wird (zumindest wenn statische Anforderungen nicht in der .Net-Pipeline ausgeführt werden).
Randnotiz: Wenn das Ziel darin besteht, die verwendete Technologie zu verschleiern , sollten Sie auch die Standardnamen für .NET-Cookies ändern ( .ASPXAUTHwenn die Formularauthentifizierung aktiviert ist ( nameAttribut für formsTag in web.config verwenden) ASP.NET_SessionId( <sessionState cookieName="yourName" />in web.config unter system.webTag verwenden) __RequestVerificationToken(ändern) per Code mit AntiForgeryConfig.CookieName, gilt aber leider nicht für die versteckte Eingabe, die dieses System im HTML generiert)).