IIS のレスポンスヘッダを削除する

以下を削除する。

Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET

(X-Powered-ByIIS マネージャの「HTTP 応答ヘッダー」から削除する)

IHttpModule を継承したクラスで PreSendRequestHeaders イベントを使う

Imports System.Web

Public Class HttpResponseServerName
    Implements IHttpModule

    Public Sub Init(ByVal context As HttpApplication) Implements IHttpModule.Init
        AddHandler context.PreSendRequestHeaders, AddressOf Me.OnPreSendRequestHeaders
    End Sub

    Public Sub Dispose() Implements IHttpModule.Dispose
    End Sub

    Public Sub OnPreSendRequestHeaders(sender As Object, e As EventArgs)
        HttpContext.Current.Response.Headers.Remove("Server")
        HttpContext.Current.Response.Headers.Remove("X-AspNet-Version")
    End Sub

End Class

web.config に追記する

<configuration>
  <system.webServer>
    <modules>
      <add name="HttpResponseServerName" type="myNameSpace.HttpResponseServerName" />
    </modules>
  </system.webServer>
</configuration>

なお Remove Unwanted HTTP Response Headers - varunm - Site Home - MSDN Blogs にキー別の対処法が書いてあるが面倒。

IIS7 の機能を拡張してみる-レスポンスヘッダー内のサーバー名の改ざん にある手順も参照したが「マネージモジュールの追加」のドロップダウンリストに上記クラスが出てこなかった。 GAC に入れないとダメなのかもしれない。

参考: