Scott Mitchell, gereksiz başlıkları kaldırmak için bir blog gönderisinde çözümler sunar .
Burada daha önce başka yanıtlarda da belirtildiği gibi, Server
başlık için http modülü çözümü veya IIS 10+ için bir web.config çözümü vardır ya da boş bırakmak için URLRewrite'ı kullanabilirsiniz .
Güncel (IIS 10 +) bir kurulum için en pratik çözüm removeServerHeader
web.config'de kullanmaktır:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
İçin X-AspNet-Version
ve X-AspNetMvc-Version
değil sadece tüm bunları üreten: o her yanıta bunları kaldırmayı daha iyi bir yol sağlar.
Web.config içinde enableVersionHeader
devre dışı bırakmak için kullanınX-AspNet-Version
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
MvcHandler.DisableMvcResponseHeader
Devre dışı bırakmak için .Net Application_Start olayında kullanınX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Ve son olarak, IIS yapılandırmasında X-Powered-By
web.config dosyasındaki özel başlığı kaldırın .
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Dikkat edin, ARR'niz (Uygulama İsteği Yönlendirme) varsa, kendi başına da ekleyecektir ve X-Powered-By
bu, özel başlık ayarlarıyla kaldırılmayacaktır. Bu seferki (bir tesiste) IIS kökü üzerinde IIS Yöneticisi, Editör yapılandırma yoluyla kaldırılmalıdır: gidin system.webServer/proxy
düğüme ve seti arrResponseHeader
için false
. A sonra IISReset
dikkate alınır.
(Ben bunu bulduk burada eski şeyleri yapılandırma 6.0 yolunu IIS ile ilgili bu yazı olduğunu hariç.)
Statik içerikte oluşturulan başlığa varsayılan olarak uygulama koduna göre çözümün geçerli olmadığını unutmayın (bunu runAllManagedModulesForAllRequests
değiştirmek için etkinleştirebilirsiniz , ancak tüm isteklerin .Net ardışık düzenini çalıştırmasına neden olur). X-AspNetMvc-Version
Statik içeriğe eklenmediği için bir sorun değildir (en azından statik istek .Net ardışık düzeninde çalıştırılmıyorsa).
Yan not: amaç kullanılan teknolojiyi gizlemek olduğunda, standart .Net çerez adlarını da değiştirmelisiniz ( .ASPXAUTH
formlar yetkilendirildiyse ( web.config içindeki etiketin name
özniteliğini kullanın forms
), ASP.NET_SessionId
( etiket <sessionState cookieName="yourName" />
altında web.config içinde kullanın system.web
), __RequestVerificationToken
( kod ile AntiForgeryConfig.CookieName
, ancak maalesef bu sistemin html'de oluşturduğu gizli girdi için geçerli değildir)).