web-dev-qa-db-ja.com

ASP.NET Core 2.1アプリケーションから「サーバー」ヘッダーを削除します

ASP.NET Core 2.1アプリケーションでServer Responseヘッダーを削除することは可能ですか(Server 2016でIIS 10)で実行されていますか?

Web.configに以下を入れてみました:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="X-Frame-Options" value="sameorigin" />
            <add name="X-XSS-Protection" value="1; mode=block" />
            <add name="X-Content-Type-Options" value="nosniff" />
            <remove name="X-Powered-By" />
            <remove name="Server" />
        </customHeaders>
    </httpProtocol>
</sytem.webServer>

応答に対する最初の4つの変更は正常に機能しましたが、Serverヘッダーは削除されませんでした。まだ「ケストレル」が見えます

12
eat-sleep-code

Kestrel Serverヘッダーは、リクエストパイプラインで追加されるのが遅すぎます。したがって、web.configまたはミドルウェアを介して削除することはできません。

AddServerHeaderプロパティfalseKestrelServerOptionsに設定することにより、サーバーヘッダーを削除できます。これはProgram.csで実行できます。

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseKestrel(options => options.AddServerHeader = false)
        .UseStartup<Startup>();
16
user1336

このソリューションは、IIS 10+バージョンで動作し、サーバー応答のx-powered-byおよびserverヘッダーを削除できます。

IIS 10では、新しい属性が追加されました:removeServerHeader

次のコンテンツを含むasp.netコアアプリケーションにweb.configファイルを作成する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" />
    </security>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

次に、アプリを公開し、IISでサイトを再起動します。

13
user3172616