เพิ่งผ่านวงจร "การทำให้แข็ง" ในโครงการปัจจุบันของฉัน - ฉันบล็อกเกี่ยวกับวิธีการที่เราใช้ซึ่งรวมถึง HTTPModule สำหรับการลบส่วนหัวต่อไปนี้ :
เซิร์ฟเวอร์,
X-AspNet-Version,
X-AspNetMvc-Version,
X-Powered-By
ชิ้นส่วนที่เกี่ยวข้องทำซ้ำด้านล่าง:
แต่ไม่มีวิธีง่ายๆในการลบส่วนหัวการตอบกลับเซิร์ฟเวอร์ผ่านการกำหนดค่า โชคดีที่ IIS7 มีโครงสร้างพื้นฐานโมดูลที่เสียบได้ซึ่งได้รับการจัดการซึ่งช่วยให้คุณสามารถขยายการทำงานได้อย่างง่ายดาย ด้านล่างนี้เป็นแหล่งข้อมูลสำหรับ HttpModule สำหรับการลบรายการของ HTTP Response Headers ที่ระบุ:
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));
}
}
}
ตรวจสอบให้แน่ใจว่าคุณได้ลงนามในชุดประกอบจากนั้นคุณสามารถติดตั้งลงใน GAC ของเว็บเซิร์ฟเวอร์ของคุณและทำการปรับเปลี่ยนต่อไปนี้เพื่อ web.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>