Jede Seite in einer MVC-Anwendung, mit der ich arbeite, legt diese HTTP-Header in Antworten fest:
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0
Wie verhindere ich, dass diese angezeigt werden?
asp.net-mvc
security
http-headers
Paul Fryer
quelle
quelle
Antworten:
X-Powered-By
ist ein benutzerdefinierter Header in IIS. Seit IIS 7 können Sie es entfernen, indem Sie Folgendes zu Ihrem hinzufügenweb.config
:Dieser Header kann auch an Ihre Bedürfnisse angepasst werden. Weitere Informationen finden Sie unter http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders
Fügen Sie dies hinzu,
web.config
um denX-AspNet-Version
Header zu entfernen:Zum Entfernen
X-AspNetMvc-Version
, BearbeitenGlobal.asax.cs
und Hinzufügen des folgendenApplication_Start
Ereignisses:Sie können Header auch zur Laufzeit über das
Application_PreSendRequestHeaders
Ereignis in ändernGlobal.asax.cs
. Dies ist nützlich, wenn Ihre Header-Werte dynamisch sind:quelle
X-Powered-By
Header dadurch nicht entfernt . Weitere Antworten dazu finden Sie inweb.config
.Sie können sie auch entfernen, indem Sie Ihrer global.asax-Datei Code hinzufügen:
quelle
<system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> <redirectHeaders> <clear /> </redirectHeaders> </httpProtocol> </system.webServer>
Ich habe diese Konfiguration in meiner gefunden,
web.config
die für eineNew Web Site...
in Visual Studio erstellte Konfiguration war (im Gegensatz zu aNew Project...
). Da die Frage eine ASP.NET MVC-Anwendung angibt, nicht als relevant, aber dennoch eine Option.Update : Troy Hunt hat auch einen Artikel mit dem Titel Shhh… lassen Sie Ihre Antwortheader nicht zu laut sprechen, mit detaillierten Schritten zum Entfernen dieser Header sowie einem Link zu seinem ASafaWeb- Tool zum Scannen nach ihnen und anderen Sicherheitskonfigurationen.
quelle
code
<Sicherheit> <Anforderungsfilterung> <Verbien> <Verb hinzufügen = "OPTIONEN" erlaubt = "falsch" /> </ verbs> </ requestFiltering> </ security>code
Wie unter Verschleiern Ihrer ASP.NET MVC-Webanwendung unter IIS 7 beschrieben , können Sie den X-AspNet-Versionsheader deaktivieren, indem Sie den folgenden Konfigurationsabschnitt auf Ihre web.config anwenden:
und entfernen Sie den Header der X-AspNetMvc-Version, indem Sie Ihre Datei Global.asax.cs wie folgt ändern:
Wie unter Benutzerdefinierte Header beschrieben Sie können den Header "X-Powered-By" entfernen, indem Sie den folgenden Konfigurationsabschnitt auf Ihre web.config anwenden:
Es gibt keine einfache Möglichkeit, den Antwortheader "Server" über die Konfiguration
HttpModule
zu entfernen. Sie können jedoch einen implementieren , um bestimmte HTTP-Header zu entfernen, wie unter Verschleiern Ihrer ASP.NET MVC-Webanwendung unter IIS 7 und unter Entfernen des Servers beschrieben. x-aspnet-version-x-aspnetmvc-version-und-x-powered-by-from-the-response-header-in-iis7 .quelle
Fügen Sie zum Entfernen des Server- Headers in der Datei Program.cs die folgende Option hinzu:
Fügen Sie für Punktnetzkern 1 die Option im Aufruf von .UseKestrel () hinzu. Fügen Sie für Punktnetzkern 2 die Zeile nach UseStartup () hinzu.
Um den X-Powered-By- Header zu entfernen , bearbeiten Sie bei Bereitstellung in IIS Ihre web.config und fügen Sie den folgenden Abschnitt in das system.webServer-Tag ein:
Fügen Sie in Ihrer Datei global.asax Folgendes hinzu, um den Server- Header zu entfernen :
Fügen Sie Ihrem Projekt die folgende c # -Klasse hinzu:
Fügen Sie dann in Ihrer web.config den folgenden Abschnitt <Module> hinzu:
Ich hatte jedoch ein Problem, bei dem Teilprojekte dieses Modul nicht finden konnten. Kein Spaß.
Entfernen des X-AspNetMvc-Version-Headers
Um das Tag "X-AspNetMvc-Version" für eine beliebige Version von .NET zu entfernen, ändern Sie Ihre Datei "web.config" so, dass sie Folgendes enthält:
Vielen Dank an Microsoft, dass Sie dies unglaublich schwierig gemacht haben. Oder vielleicht war das Ihre Absicht, damit Sie IIS- und MVC-Installationen auf der ganzen Welt verfolgen können ...
quelle
RemoveServerHeaderModule
sie wird nicht funktionieren in WebAPI Projekt.Wie auf der Seite Entfernen von Standardserver-Headern auf Windows Azure-Websites gezeigt , können Sie Header folgendermaßen entfernen:
Dadurch werden der Server-Header und die X-Header entfernt.
Dies funktionierte lokal in meinen Tests in Visual Studio 2015.
quelle
In Asp.Net Core können Sie die web.config-Dateien folgendermaßen bearbeiten:
Sie können den Server-Header in den Kestrel-Optionen entfernen:
quelle
Überprüfen Sie diesen Blog Verwenden Sie keinen Code, um Header zu entfernen. Es ist laut Microsoft instabil
Meine Meinung dazu:
quelle
Der Vollständigkeit halber gibt es eine andere Möglichkeit, das zu entfernen
Server
Header mithilfe von regedit .Siehe diesen MSDN-Blog .
Ich würde lieber eine geeignete Lösung mit der Datei Web.config finden, aber die Verwendung
<rewrite>
ist nicht gut, da das Umschreibemodul installiert werden muss, und selbst dann wird der Header nicht wirklich entfernt, sondern nur leer.quelle
Sie können jeden Header oder irgendetwas in ändern
Application_EndRequest()
dies versuchenquelle
Der X-Powered-By-Header wird von IIS zur HTTP-Antwort hinzugefügt, sodass Sie ihn auch auf Serverebene über IIS Manager entfernen können:
Sie können die web.config direkt verwenden:
quelle