Scott Mitchell memberikan solusi dalam posting blog untuk menghapus header yang tidak perlu .
Seperti yang telah dikatakan di sini di jawaban lain, untuk Server
header, ada solusi modul http , atau solusi web.config untuk IIS 10+ , atau Anda dapat menggunakan URLRewrite sebagai gantinya untuk mengosongkannya .
Solusi paling praktis untuk penyiapan terkini (IIS 10 +) menggunakan removeServerHeader
di web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Untuk X-AspNet-Version
dan X-AspNetMvc-Version
, ia memberikan cara yang lebih baik daripada menghapusnya di setiap respons: sama sekali tidak membuatnya sama sekali.
Gunakan enableVersionHeader
untuk menonaktifkan X-AspNet-Version
, di web.config
<system.web>
...
<httpRuntime enableVersionHeader="false" />
...
</system.web>
Gunakan MvcHandler.DisableMvcResponseHeader
dalam acara .Net Application_Start untuk menonaktifkanX-AspNetMvc-Version
MvcHandler.DisableMvcResponseHeader = true;
Dan terakhir, hapus dalam konfigurasi IIS X-Powered-By
header kustom di web.config.
<system.webServer>
...
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Hati-hati, jika Anda memiliki ARR (Application Request Routing), itu juga akan menambahkan miliknya sendiri X-Powered-By
, yang tidak akan dihapus oleh pengaturan tajuk khusus. Yang ini harus dihapus melalui Manajer IIS, konfigurasi Editor pada akar IIS (bukan di situs): buka system.webServer/proxy
node dan setel arrResponseHeader
ke false
. Setelah IISReset
itu, itu diperhitungkan.
(Saya telah menemukan yang ini di sini , kecuali posting ini tentang cara lama IIS 6.0 untuk mengkonfigurasi berbagai hal.)
Jangan lupa bahwa solusi dengan kode aplikasi tidak berlaku secara default untuk header yang dihasilkan pada konten statis (Anda dapat mengaktifkan runAllManagedModulesForAllRequests
untuk mengubahnya, tetapi itu menyebabkan semua permintaan untuk menjalankan pipeline .Net). Ini bukan masalah X-AspNetMvc-Version
karena tidak ditambahkan pada konten statis (setidaknya jika permintaan statis tidak dijalankan di pipeline .Net).
Catatan tambahan: ketika tujuannya adalah untuk menyelubungi teknologi yang digunakan, Anda juga harus mengubah nama cookie .Net standar ( .ASPXAUTH
jika formulir auth diaktifkan (gunakan name
atribut pada forms
tag di web.config), ASP.NET_SessionId
(gunakan <sessionState cookieName="yourName" />
di web.config di bawah system.web
tag), __RequestVerificationToken
(ubah itu dengan kode dengan AntiForgeryConfig.CookieName
, tapi sayangnya tidak berlaku untuk input tersembunyi yang dihasilkan sistem ini di html)).