web-dev-qa-db-ja.com

IIS X-Powered-By:ASP.NETなどのカスタムヘッダーを応答から削除する方法

IIS 7.0integrated modeでは、Response.ClearHeaders() IISを含むすべてのヘッダーを削除した後、ServerX-Powered-Byこれはハッカーに良い情報を明らかにします。どうすればこの動作を停止できますか(まだカスタムヘッダーを追加する必要があると考えます)。

42
Xaqron

これをWeb.Configに追加できます。

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <remove name="X-Powered-By" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

更新:MVCフレームワークを使用している場合は、X-AspNetMvc-VersionおよびX-AspNet-Versionヘッダーも削除することをお勧めします。これは、MvcHandler.DisableMvcResponseHeader = trueファイルにGlobal.asaxを設定し、<system.web><httpRuntime enableVersionHeader="false" /></system.web>Web.configをそれぞれ設定することで実現されます。

74
eth0

X-Powered-ByはIIS内で構成されます。 Windows 7では、具体的には次のとおりです。

  1. IISマネージャー
  2. コンピュータ名>サイト>デフォルトのWebサイト
  3. HTTP応答ヘッダー
  4. 削除する X-Powered-By

しかし、何がServerヘッダーを生成するのかわかりません。

13
Samuel Neff

IIS7 +統合モードの場合、eth0にはそれがあります:<customHeaders> web.configのタグ。それをありがとう。 "Server"ヘッダーについては、MVCを使用している場合は、次のコードを追加するだけです。

    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
    }

global.asaxのMvcApplicationクラスに追加します。それ以外の場合は、カスタムHttpモジュールを追加して、PreSendRequestHeadersイベントを処理するだけで、同じことができます。

5
reads0520

ここで、web.configファイルがなくなったASP.NET Coreバージョンでは、別のアプローチが必要であることをここに追加します。

ASP.NET Core 2.1でヘッダーを削除するために、次の調整を行いました。

X-powered-byヘッダーを削除するには、

<customHeaders>
        <clear />
        <add name="X-Powered-By" value="ASP.NET" />
</customHeaders>

<customHeaders>
        <remove name="X-Powered-By" />
</customHeaders>

プロジェクトの.vs\configフォルダーにあるapplicationhost.configファイル内。

サーバーヘッダーは、

.UseKestrel(c => c.AddServerHeader = false)

program.csファイル内。

2
Sprouter

次の回答には、URLScanまたはカスタムHttpModuleを必要としない完全なソリューションが含まれており、言及するすべての関連ヘッダーを削除します。 Azureでも動作します。

rlScanを使用しないAzure/IIS7での過剰なHTTP応答ヘッダーの削除/非表示/無効化

2
Nick Evans

URLScanを使用して、サーバーヘッダーを削除したり、別のサーバーヘッダーを構成したりできます http://learn.iis.net/page.aspx/938/urlscan-3-reference/

しかし、実際にハッカーが何を使用しているのかをハッカーが知ることは決してありません。サーバー情報を検出する方法は明らかに他にもあります。

1
Lex Li

Appcmd.exe(IIS 7以降)を使用してジョブを実行できます。スクリプトは次のようになります。

C:\Windows\System32\inetsrv\appcmd.exe set config -section:system.webserver/httpProtocol /-customHeaders.["name='X-Powered-By'"] /commit:apphost  

/commit:apphost:これにより、構成設定がApplicationHost.configファイルの適切な場所セクションにコミットされます。

私は通常、これらのすべてのスクリプトのバッチファイルを作成し、アプリケーションのインストール後にWebサーバーで実行します。

ASP.NET MVCアプリケーションの場合、アプローチは異なり、ここに記載されている他の回答を参照できます。

1
Saurabh R S