Każda strona w aplikacji MVC, z którą pracuję, ustawia następujące nagłówki HTTP w odpowiedziach:
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0
Jak mogę zapobiec ich wyświetlaniu?
asp.net-mvc
security
http-headers
Paul Fryer
źródło
źródło
Odpowiedzi:
X-Powered-By
to niestandardowy nagłówek w usługach IIS. Od wersji IIS 7 można je usunąć, dodając następujące elementy doweb.config
:Ten nagłówek można również zmodyfikować zgodnie ze swoimi potrzebami. Więcej informacji można znaleźć pod adresem http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders
Dodaj to do,
web.config
aby pozbyć sięX-AspNet-Version
nagłówka:Na koniec, aby usunąć
X-AspNetMvc-Version
, edytowaćGlobal.asax.cs
i dodać następujące elementy wApplication_Start
wydarzeniu:Możesz także modyfikować nagłówki w czasie wykonywania za pośrednictwem
Application_PreSendRequestHeaders
zdarzenia wGlobal.asax.cs
. Jest to przydatne, jeśli wartości nagłówka są dynamiczne:źródło
X-Powered-By
nagłówka. Zobacz inne odpowiedzi, jak to osiągnąć, wweb.config
.Możesz je również usunąć, dodając kod do pliku global.asax:
źródło
<system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> <redirectHeaders> <clear /> </redirectHeaders> </httpProtocol> </system.webServer>
Znalazłem tę konfigurację w mojej,
web.config
która była dlaNew Web Site...
utworzonego w Visual Studio (w przeciwieństwie do aNew Project...
). Ponieważ pytanie stanowi aplikację ASP.NET MVC, nie jest tak istotna, ale nadal jest opcją.Aktualizacja : Troy Hunt ma również artykuł zatytułowany Shhh… nie pozwól, aby nagłówki odpowiedzi mówiły zbyt głośno, przedstawiając szczegółowe kroki dotyczące usuwania tych nagłówków, a także łącze do jego narzędzia ASafaWeb do skanowania w poszukiwaniu ich i innych konfiguracji zabezpieczeń.
źródło
code
<security> <requestFiltering> <verbs> <add verb = "OPTIONS" allowed = "false" /> </verbs> </requestFiltering> </security>code
Aby usunąć nagłówek serwera , w pliku Program.cs dodaj następującą opcję:
Dla dot net core 1, wstaw opcję add wewnątrz wywołania .UseKestrel (). W przypadku dot net core 2 dodaj wiersz po UseStartup ().
Aby usunąć nagłówek X-Powered-By , jeśli został wdrożony w usługach IIS, edytuj plik web.config i dodaj następującą sekcję w tagu system.webServer:
Aby usunąć nagłówek serwera , w pliku global.asax dodaj następujące elementy:
Dodaj następującą klasę C # do projektu:
a następnie w swoim web.config dodaj następującą sekcję <modules>:
Jednak miałem problem, w którym podprojekty nie mogły znaleźć tego modułu. Nie śmieszne.
Usuwanie nagłówka X-AspNetMvc-Version
Aby usunąć znacznik „X-AspNetMvc-Version” dla dowolnej wersji platformy .NET, zmodyfikuj plik „web.config”, aby zawierał:
Dziękuję firmie Microsoft za uczynienie tego niewiarygodnie trudnym. A może taki był Twój zamiar, abyś mógł śledzić instalacje IIS i MVC na całym świecie ...
źródło
RemoveServerHeaderModule
tym, że to nie zadziała w projekcie WebApi.Zgodnie z opisem w sekcji Maskowanie aplikacji sieci Web ASP.NET MVC w usługach IIS 7 można wyłączyć nagłówek X-AspNet-Version, stosując następującą sekcję konfiguracji do pliku web.config:
i usuń nagłówek X-AspNetMvc-Version, zmieniając plik Global.asax.cs w następujący sposób:
Zgodnie z opisem w nagłówkach niestandardowych Nagłówek „X-Powered-By” można usunąć, stosując następującą sekcję konfiguracji do pliku web.config:
Nie ma łatwego sposobu na usunięcie nagłówka odpowiedzi „Server” poprzez konfigurację, ale można zaimplementować,
HttpModule
aby usunąć określone nagłówki HTTP, zgodnie z opisem w artykule Maskowanie aplikacji sieci Web ASP.NET MVC w usługach IIS 7 oraz w instrukcji usuwania serwera x-aspnet-version-x-aspnetmvc-version-and-x-powered-by-from-the-response-header-in-iis7 .źródło
Jak pokazano na stronie Usuwanie standardowych nagłówków serwera na stronie Witryny sieci Web systemu Windows Azure , nagłówki można usunąć, wykonując następujące czynności:
Spowoduje to usunięcie nagłówka serwera i nagłówków X.
To zadziałało lokalnie w moich testach w programie Visual Studio 2015.
źródło
W Asp.Net Core możesz edytować pliki web.config w następujący sposób:
Możesz usunąć nagłówek serwera w opcjach Kestrel:
źródło
Sprawdź ten blog Nie używaj kodu do usuwania nagłówków. Według Microsoft jest niestabilny
Moje podejście do tego:
źródło
Ze względu na kompletność istnieje inny sposób usunięcia
Server
nagłówka za pomocą regedit.Zobacz ten blog MSDN .
Wolałbym znaleźć właściwe rozwiązanie przy użyciu Web.config, ale używanie
<rewrite>
nie jest dobre, ponieważ wymaga zainstalowania modułu przepisywania, a nawet wtedy tak naprawdę nie usunie nagłówka, po prostu go opróżni.źródło
Możesz zmienić dowolny nagłówek lub cokolwiek
Application_EndRequest()
próbując tegoźródło
Nagłówek X-Powered-By jest dodawany przez IIS do odpowiedzi HTTP, dzięki czemu można go usunąć nawet na poziomie serwera za pośrednictwem Menedżera IIS:
Możesz bezpośrednio użyć pliku web.config:
źródło