Scott Mitchell fornisce in un post sul blog soluzioni per rimuovere le intestazioni non necessarie .
Come già detto qui in altre risposte, per l' Serverintestazione, c'è la soluzione del modulo http , o una soluzione web.config per IIS 10+ , oppure puoi usare URLRewrite invece per cancellarlo .
La soluzione più pratica per una configurazione aggiornata (IIS 10+) è utilizzare removeServerHeaderin web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Per X-AspNet-VersioneX-AspNetMvc-Version , fornisce un modo migliore rispetto a rimuoverli a ogni risposta: semplicemente non generarli affatto.
Utilizzare enableVersionHeaderper la disabilitazione X-AspNet-Version, in web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Utilizzare MvcHandler.DisableMvcResponseHeadernell'evento .Net Application_Start per la disabilitazioneX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Infine, rimuovi nella configurazione IIS l' X-Powered-Byintestazione personalizzata in web.config.
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Attenzione, se hai ARR (Application Request Routing), aggiungerà anche il proprio X-Powered-By, che non verrà rimosso dalle impostazioni delle intestazioni personalizzate. Questo deve essere rimosso tramite Gestione IIS, configurazione dell'Editor sulla radice IIS (non su un sito): vai al system.webServer/proxynodo e imposta arrResponseHeadersu false. Dopo un IISReset, viene preso in considerazione.
(Ho trovato questo qui , tranne che questo post riguarda il vecchio modo IIS 6.0 di configurare le cose.)
Non dimenticare che la soluzione in base al codice dell'applicazione non si applica per impostazione predefinita all'intestazione generata sul contenuto statico (puoi attivare il runAllManagedModulesForAllRequestsper modificarlo, ma fa sì che tutte le richieste vengano eseguite .Net pipeline). Non è un problema perX-AspNetMvc-Version poiché non viene aggiunto su contenuto statico (almeno se la richiesta statica non viene eseguita nella pipeline .Net).
Nota a margine: quando l'obiettivo è mascherare la tecnologia utilizzata, è necessario modificare anche i nomi dei cookie .Net standard ( .ASPXAUTHse l'autenticazione dei moduli è attivata (utilizzare l' nameattributo sul formstag in web.config), ASP.NET_SessionId(utilizzare <sessionState cookieName="yourName" />in web.config sotto il system.webtag), __RequestVerificationToken(modificarlo per codice con AntiForgeryConfig.CookieName, ma sfortunatamente non si applica all'input nascosto che questo sistema genera nell'html)).