Baru saja melalui siklus "pengerasan" pada proyek saya saat ini - saya membuat blog tentang pendekatan yang kami ambil, yang mencakup HTTPModule untuk menghapus header berikut :
Server,
Versi
X-AspNet , Versi X-AspNetMvc,
Didukung oleh X
Potongan-potongan penting direproduksi di bawah ini:
Tetapi tidak ada cara mudah untuk menghapus header respons Server melalui konfigurasi. Untungnya IIS7 memiliki infrastruktur modul pluggable yang dikelola yang memungkinkan Anda untuk dengan mudah memperluas fungsinya. Di bawah ini adalah sumber untuk HttpModule untuk menghapus daftar Header Respons HTTP tertentu:
namespace Zen.Core.Web.CloakIIS
{
#region Using Directives
using System;
using System.Collections.Generic;
using System.Web;
#endregion
/// <summary>
/// Custom HTTP Module for Cloaking IIS7 Server Settings to allow anonymity
/// </summary>
public class CloakHttpHeaderModule : IHttpModule
{
/// <summary>
/// List of Headers to remove
/// </summary>
private List<string> headersToCloak;
/// <summary>
/// Initializes a new instance of the <see cref="CloakHttpHeaderModule"/> class.
/// </summary>
public CloakHttpHeaderModule()
{
this.headersToCloak = new List<string>
{
"Server",
"X-AspNet-Version",
"X-AspNetMvc-Version",
"X-Powered-By",
};
}
/// <summary>
/// Dispose the Custom HttpModule.
/// </summary>
public void Dispose()
{
}
/// <summary>
/// Handles the current request.
/// </summary>
/// <param name="context">
/// The HttpApplication context.
/// </param>
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += this.OnPreSendRequestHeaders;
}
/// <summary>
/// Remove all headers from the HTTP Response.
/// </summary>
/// <param name="sender">
/// The object raising the event
/// </param>
/// <param name="e">
/// The event data.
/// </param>
private void OnPreSendRequestHeaders(object sender, EventArgs e)
{
this.headersToCloak.ForEach(h => HttpContext.Current.Response.Headers.Remove(h));
}
}
}
Pastikan Anda menandatangani rakitan, kemudian Anda dapat menginstalnya ke GAC server web Anda dan cukup buat modifikasi berikut ke web.config aplikasi Anda (atau jika Anda ingin diterapkan secara global, ke machine.config):
<configuration>
<system.webServer>
<modules>
<add name="CloakHttpHeaderModule"
type="Zen.Core.Web.CloakIIS.CloakHttpHeaderModule, Zen.Core.Web.CloakIIS,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=<YOUR TOKEN HERE>" />
</modules>
</system.webServer>
</configuration>