Scott Mitchell podaje w poście na blogu rozwiązania do usuwania niepotrzebnych nagłówków .
Jak już wspomniano w innych odpowiedziach, w przypadku Server
nagłó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 removeServerHeader
w pliku web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Ponieważ X-AspNet-Version
i X-AspNetMvc-Version
, zapewnia lepszy sposób niż usuwanie ich z każdej odpowiedzi: po prostu nie generowanie ich wcale.
Służy enableVersionHeader
do wyłączania X-AspNet-Version
w pliku web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Użyj MvcHandler.DisableMvcResponseHeader
w zdarzeniu .Net Application_Start do wyłączeniaX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Na koniec usuń w konfiguracji usług IIS X-Powered-By
niestandardowy 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/proxy
węzła i ustaw arrResponseHeader
na false
. Po an IISReset
jest 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ć, runAllManagedModulesForAllRequests
aby to zmienić, ale powoduje to, że wszystkie żądania uruchamiają potok .Net). Nie stanowi to problemu, X-AspNetMvc-Version
ponieważ 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 ( .ASPXAUTH
jeśli aktywowano uwierzytelnianie formularzy (użyj name
atrybutu w forms
tagu w web.config), ASP.NET_SessionId
(użyj <sessionState cookieName="yourName" />
w web.config pod system.web
tagiem), __RequestVerificationToken
(zmień to kodem z AntiForgeryConfig.CookieName
, ale niestety nie dotyczy to ukrytych danych wejściowych, które ten system generuje w html)).