Właśnie przeszedłem cykl „hartowania” w moim obecnym projekcie - napisałem na blogu o przyjętym przez nas podejściu, które obejmuje moduł HTTP do usuwania następujących nagłówków :
Serwer,
wersja
X-AspNet , wersja X-AspNetMvc,
X-Powered-By
Istotne utwory przedstawione poniżej:
Ale nie ma łatwego sposobu na usunięcie nagłówka odpowiedzi serwera za pomocą konfiguracji. Na szczęście IIS7 ma zarządzaną infrastrukturę modułów wtykowych, która pozwala łatwo rozszerzyć jego funkcjonalność. Poniżej znajduje się źródło modułu HttpModule do usuwania określonej listy nagłówków odpowiedzi HTTP:
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));
}
}
}
Upewnij się, że podpisujesz zestaw, a następnie możesz zainstalować go w GAC swoich serwerów internetowych i po prostu wprowadzić następującą modyfikację pliku web.config aplikacji (lub jeśli chcesz, aby była stosowana globalnie, w pliku 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>