Scott Mitchell podaje w poście na blogu rozwiązania do usuwania niepotrzebnych nagłówków .
Jak już wspomniano w innych odpowiedziach, w przypadku Servernagłówka istnieje rozwiązanie modułu http lub rozwiązanie web.config dla usług IIS 10+ lub zamiast tego można użyć URLRewrite do jego wyczyszczenia .
Najbardziej praktycznym rozwiązaniem dla aktualnej konfiguracji (IIS 10 +) jest użycie removeServerHeaderw pliku web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Ponieważ X-AspNet-Versioni X-AspNetMvc-Version, zapewnia lepszy sposób niż usuwanie ich z każdej odpowiedzi: po prostu nie generowanie ich wcale.
Służy enableVersionHeaderdo wyłączania X-AspNet-Versionw pliku web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Użyj MvcHandler.DisableMvcResponseHeaderw zdarzeniu .Net Application_Start do wyłączeniaX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Na koniec usuń w konfiguracji usług IIS X-Powered-Byniestandardowy nagłówek w pliku web.config.
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Uważaj, jeśli masz ARR (Routing żądań aplikacji), doda również swój własny X-Powered-By, który nie zostanie usunięty przez niestandardowe ustawienia nagłówków. Ten musi zostać usunięty przez Menedżera IIS, konfigurację Edytora w katalogu głównym IIS (nie w lokacji): przejdź do system.webServer/proxywęzła i ustaw arrResponseHeaderna false. Po an IISResetjest brany pod uwagę.
(Znalazłem ten tutaj , z wyjątkiem tego, że ten post dotyczy starego sposobu konfigurowania usług IIS 6.0).
Nie zapominaj, że rozwiązanie przez kod aplikacji nie dotyczy domyślnie nagłówka generowanego na statycznej zawartości (możesz aktywować, runAllManagedModulesForAllRequestsaby to zmienić, ale powoduje to, że wszystkie żądania uruchamiają potok .Net). Nie stanowi to problemu, X-AspNetMvc-Versionponieważ nie jest dodawane do zawartości statycznej (przynajmniej jeśli żądanie statyczne nie jest uruchamiane w potoku .Net).
Uwaga dodatkowa: jeśli celem jest zamaskowanie używanej technologii, należy również zmienić standardowe nazwy plików cookie .Net ( .ASPXAUTHjeśli aktywowano uwierzytelnianie formularzy (użyj nameatrybutu w formstagu w web.config), ASP.NET_SessionId(użyj <sessionState cookieName="yourName" />w web.config pod system.webtagiem), __RequestVerificationToken(zmień to kodem z AntiForgeryConfig.CookieName, ale niestety nie dotyczy to ukrytych danych wejściowych, które ten system generuje w html)).