Vừa trải qua chu trình "làm cứng" dự án hiện tại của tôi - tôi đã viết blog về cách tiếp cận chúng tôi đã thực hiện, bao gồm HTTPModule để xóa các tiêu đề sau :
Máy chủ,
Phiên bản
X-AspNet , Phiên bản X-AspNetMvc,
X-Powered-By
Các mảnh quan trọng được sao chép dưới đây:
Nhưng không có cách nào dễ dàng để loại bỏ tiêu đề phản hồi của Máy chủ thông qua cấu hình. May mắn thay IIS7 có một cơ sở hạ tầng mô đun có thể cắm được quản lý cho phép bạn dễ dàng mở rộng chức năng của nó. Dưới đây là nguồn cho một HTTPModule để xóa danh sách Tiêu đề phản hồi HTTP được chỉ định:
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));
}
}
}
Đảm bảo rằng bạn đã ký hợp đồng, sau đó bạn có thể cài đặt nó vào GAC của các máy chủ web của mình và chỉ cần thực hiện sửa đổi sau cho web.config của ứng dụng của bạn (hoặc nếu bạn muốn nó được áp dụng trên toàn cầu, cho 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>