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 Server
Header 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 removeServerHeader
in der Datei web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Für X-AspNet-Version
und X-AspNetMvc-Version
bietet er einen besseren Weg, als sie bei jeder Antwort zu entfernen: sie einfach überhaupt nicht zu generieren.
Verwenden enableVersionHeader
zum Sperren X-AspNet-Version
, in web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Verwenden Sie MvcHandler.DisableMvcResponseHeader
in Fall .Net Application_Start zum SperrenX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Entfernen Sie schließlich in der IIS-Konfiguration den X-Powered-By
benutzerdefinierten 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/proxy
Knoten und setzen Sie arrResponseHeader
auf false
. Nach einem IISReset
wird 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, runAllManagedModulesForAllRequests
um dies zu ändern, aber alle Anforderungen werden ausgeführt .Net-Pipeline). Dies ist kein Problem, X-AspNetMvc-Version
da 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 ( .ASPXAUTH
wenn die Formularauthentifizierung aktiviert ist ( name
Attribut für forms
Tag in web.config verwenden) ASP.NET_SessionId
( <sessionState cookieName="yourName" />
in web.config unter system.web
Tag verwenden) __RequestVerificationToken
(ändern) per Code mit AntiForgeryConfig.CookieName
, gilt aber leider nicht für die versteckte Eingabe, die dieses System im HTML generiert)).