Setiap halaman dalam aplikasi MVC saya bekerja dengan set header HTTP ini sebagai tanggapan:
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0
Bagaimana saya mencegah ini agar tidak muncul?
asp.net-mvc
security
http-headers
Paul Fryer
sumber
sumber
Jawaban:
X-Powered-By
adalah tajuk khusus di IIS. Sejak IIS 7, Anda dapat menghapusnya dengan menambahkan yang berikut keweb.config
:Header ini juga dapat dimodifikasi sesuai kebutuhan Anda, untuk informasi lebih lanjut lihat http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders
Tambahkan ini ke
web.config
untuk menyingkirkanX-AspNet-Version
tajuk:Akhirnya, untuk menghapus
X-AspNetMvc-Version
, mengedit,Global.asax.cs
dan menambahkan yang berikut dalamApplication_Start
acara:Anda juga dapat memodifikasi tajuk saat runtime melalui
Application_PreSendRequestHeaders
acara diGlobal.asax.cs
. Ini berguna jika nilai header Anda dinamis:sumber
X-Powered-By
header. Lihat jawaban lain tentang bagaimana untuk mencapai dalam hal iniweb.config
.Anda juga dapat menghapusnya dengan menambahkan kode ke file global.asax Anda:
sumber
<system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> </customHeaders> <redirectHeaders> <clear /> </redirectHeaders> </httpProtocol> </system.webServer>
Saya menemukan konfigurasi ini di saya
web.config
yangNew Web Site...
dibuat di Visual Studio (sebagai lawan dari aNew Project...
). Karena pertanyaan menyatakan aplikasi ASP.NET MVC, tidak relevan, tetapi masih merupakan pilihan.Pembaruan : Juga, Troy Hunt memiliki artikel berjudul Shhh ... jangan biarkan header respons Anda berbicara terlalu keras dengan langkah-langkah terperinci untuk menghapus header ini serta tautan ke alat ASafaWeb- nya untuk memindai dan konfigurasi keamanan lainnya.
sumber
code
<security> <requestFiltering> <verbs> <add kata kerja = <tambahkan kata kerja = "OPSI" diizinkan = "false" /> </verbs> </requestFiltering> </security>code
Untuk menghapus header Server , dalam file Program.cs , tambahkan opsi berikut:
Untuk dot net core 1, tambahkan opsi di dalam panggilan .UseKestrel (). Untuk dot net core 2, tambahkan baris setelah UseStartup ().
Untuk menghapus header X-Powered-By , jika digunakan untuk IIS, edit web.config Anda dan tambahkan bagian berikut di dalam tag system.webServer:
Untuk menghapus header Server , dalam file global.asax Anda tambahkan yang berikut ini:
Tambahkan kelas c # berikut ke proyek Anda:
dan kemudian di dalam web.config Anda tambahkan bagian <modules> berikut:
Namun saya punya masalah di mana sub proyek tidak dapat menemukan modul ini. Tidak menyenangkan.
Menghapus header X-AspNetMvc-Version
Untuk menghapus tag '' X-AspNetMvc-Version '', untuk versi .NET apa pun, ubah file 'web.config' Anda untuk memasukkan:
Terima kasih Microsoft untuk membuat ini sangat sulit. Atau mungkin itu niat Anda sehingga Anda dapat melacak pemasangan IIS dan MVC di seluruh dunia ...
sumber
RemoveServerHeaderModule
itu tidak akan berfungsi dalam proyek WebApi.Seperti yang dijelaskan dalam Cloaking Aplikasi Web ASP.NET MVC Anda di IIS 7 , Anda bisa mematikan header X-AspNet-Version dengan menerapkan bagian konfigurasi berikut ke web.config Anda:
dan hapus header X-AspNetMvc-Version dengan mengubah Global.asax.cs Anda sebagai berikut:
Seperti yang dijelaskan dalam header khusus, Anda dapat menghapus header "X-Powered-By" dengan menerapkan bagian konfigurasi berikut ke web.config Anda:
Tidak ada cara mudah untuk menghapus header respons "Server" melalui konfigurasi, tetapi Anda dapat menerapkannya
HttpModule
untuk menghapus Header HTTP tertentu seperti yang dijelaskan dalam Cloaking Aplikasi Web ASP.NET MVC Anda di IIS 7 dan bagaimana cara menghapus server- x-aspnet-version-x-aspnetmvc-version-dan-x-powered-by-from-the-response-header-in-iis7 .sumber
Seperti yang ditunjukkan pada Menghapus header server standar pada halaman Situs Web Windows Azure , Anda dapat menghapus header dengan yang berikut ini:
Ini menghapus header Server, dan header-X.
Ini bekerja secara lokal dalam pengujian saya di Visual Studio 2015.
sumber
Di Asp.Net Core Anda dapat mengedit file web.config seperti:
Anda dapat menghapus header server di opsi Kestrel:
sumber
Periksa blog ini. Jangan gunakan kode untuk menghapus header. Itu tidak stabil menurut Microsoft
Pandangan saya tentang ini:
sumber
Demi kelengkapan, ada cara lain untuk menghapus
Server
header, menggunakan regedit.Lihat blog MSDN ini .
Saya lebih suka mencari solusi yang tepat menggunakan Web.config, tetapi menggunakan
<rewrite>
itu tidak baik karena membutuhkan modul penulisan ulang yang harus diinstal, dan bahkan kemudian itu tidak akan benar-benar menghapus header, kosongkan saja.sumber
Anda dapat mengubah tajuk apa pun atau apa pun di
Application_EndRequest()
coba inisumber
Header X-Powered-By ditambahkan oleh IIS ke respons HTTP, sehingga Anda dapat menghapusnya bahkan di tingkat server melalui IIS Manager:
Anda dapat menggunakan web.config secara langsung:
sumber