Şu anki projemdeki "sertleşme" döngüsünü henüz geçtikten sonra - aşağıdaki başlıkları kaldırmak için bir HTTPModule içeren, uyguladığımız yaklaşım hakkında blog yazdım :
Sunucu,
X-AspNet Sürümü,
X-AspNetMvc Sürümü,
X-Powered-By
Aşağıda belirtilen çoğaltılmış parçalar:
Ancak, Sunucu yanıt başlığını yapılandırma yoluyla kaldırmanın kolay bir yolu yoktur. Neyse ki IIS7, işlevselliğini kolayca genişletebilmenizi sağlayan yönetilebilir bir takılabilir modül altyapısına sahiptir. Belirtilen bir HTTP Tepki Başlığı listesini kaldırmak için kullanılan bir HttpModule kaynağı aşağıdadır:
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));
}
}
}
Derlemeyi imzaladığınızdan emin olun, ardından web sunucularınızın GAC'sine yükleyebilir ve uygulamanızın web.config dosyasında (veya genel olarak makinenin uygulanmasını istiyorsanız, machine.config üzerinde) aşağıdaki değişiklikleri yapabilirsiniz:
<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>