web-dev-qa-db-ja.com

サーバー応答ヘッダーの削除IIS 8.0 / 8.5

IIS 8.0/8.5のサーバーヘッダー応答を削除するにはどうすればよいですか?
現在のサーバーレポート:Microsoft-IIS/8.0Microsoft-IIS/8.5
IIS 7.0では、URLScan 3.1を使用しましたが、これはIIS 7.0でのみサポートされ、8.xではサポートされません。

24
BastianW

別の解決策がありますが、私の意見では、この解決策は最良かつ安全です。

Microsoftが作成したUrlRewriteモジュールを使用できます。 Url RewriteモジュールはURLをリダイレクトし、応答ヘッダー内のIISサーバー名を変更することもできます。

リダイレクトプロパティを使用する必要はありません。サーバーヘッダー値を変更するだけで使用できます。

手順は次のとおりです。

  1. 最初に、次のリンクからUrlRewriteモジュールをダウンロードします: http://www.iis.net/downloads/Microsoft/url-rewrite およびIISにインストールしますサーバ。その後、cmdコンソールでこのコマンドでIISを再起動します

    iisreset /restart
    
  2. <system.WebServer>タグの下のWeb設定ファイルに次のアイテムを追加します。値項目には、サーバー名として何でも書き込むことができます。

    enter image description here

  3. 最後に、データのヘッダーのIISバージョン名を変更しました。 IISを再起動します。 cmdコンソール経由。

  4. ボーナス:Webサイトをテストして、機能するかどうかを確認したい場合... mozilla firefoxプラグイン「HttpRequester」を使用できます。このプラグインの場合: https://addons.mozilla.org/En-us/firefox/addon/httprequester/

PS:私はそれをテストし、IISサーバーで動作しました。 Visual Studioによってtemproray IISサーバーが作成されていません。

17
Mahmut EFE

残念ながら、IISの「サーバー」ヘッダーを削除するためのオンラインでの推奨事項のほとんどは、IIS 8.0および8.5では機能しません。唯一の有効なオプションを見つけましたが、私の意見では、IIS Native-Codeモジュールを使用することも最善です。

ネイティブコードモジュールは、ASP.NETではなくwin32 APIを使用して記述されているため、一般的なマネージモジュールとは異なります。これは、ASP.NETパイプラインを介した過去の要求だけでなく、すべての要求(静的なページと画像を含む)で機能することを意味します。ネイティブコードモジュールを使用すると、要求の最後で不要なヘッダーを削除できます。つまり、設定されている場所に関係なく、ヘッダー(「サーバー」ヘッダーを含む)を削除できます。

IIS 7.0〜8.5のヘッダーを削除するためのネイティブコードモジュールの例のバイナリとソースコードは、次の記事で入手できます。

http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85

9
ph1ll

Web.configのカスタムヘッダーセグメントでclearタグを使用するだけです。

<system.webServer>
   <httpProtocol>
      <customHeaders>
           <clear />
            <add name="X-Custom-Name1" value="MyCustomValue1" />
            <add name="X-Custom-Name2" value="MyCustomValue2" />
      </customHeaders>
   </httpProtocol>
</system.webServer>

動的ヘッダーの場合、Global.ascxで次のコードを使用できます。

protected void Application_PreSendRequestHeaders() 
   {
       Response.Headers.Remove("Server");
       Response.AddHeader("Sample1", "Value1");
   }

IIS 10.0から始まるweb.configからServerヘッダーを削除できるようになりました。

<security>
  <requestFiltering removeServerHeader ="true" />
</security>

すべての不要/不要なヘッダーを削除する方法の詳細については、 here を参照してください。

これは、他のすべてのアプローチと同様に、サーバーヘッダーを「アプリケーション」から隠すことに注意してください。あなたが例えばIIS自体またはアプリケーション外のASP.NETによって生成されたデフォルトページまたはエラーページに到達し、これらのルールは適用されません。したがって、理想的には、それらはIISのルートレベルにあるべきであり、その敷居はIIS自体に対してエラー応答を残す場合があります。

IIS 10には bug があり、configでもヘッダーを表示することがあります。これで修正されるはずですが、IIS/Windowsを更新する必要があります。

1

これは非常に簡単です。カスタムモジュールを作成するだけです:

public class HeaderStripModule : IHttpModule
{
    public void Init(HttpApplication application)
    {
        application.PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
    }

    public void Dispose(){}
}

そして、web.configまたはapplicationHost.configマシン全体の実装が必要な場合。

<system.webServer>
  <modules>
      <add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" />
  </modules>
</system.webServer>
1
rism

上記の問題については、Global.asax.csに以下のコードを追加してください

protected void Application_PreSendRequestHeaders() 
   {
       Response.Headers.Remove("Server");
       Response.AddHeader("Sample1", "Value1");
   }

多くのブラウジング後に問題が解決しました。

1
Girish Arora

URLScanは、「IIS 7.5)で追加された機能」の機能が「リクエストフィルタリング」オプションを介して利用可能であると想定されているため、IIS 7.5から開始されなくなりました。

ただし、URLScanの「サーバーヘッダーの削除」オプションは、「リクエストフィルタリング」に同等のものがあるようには見えません。

this answer および this answer to you question で述べたように、代わりにURLRewriteでServerを空にすることができます。これはIIS 8/8.5(UIをIIS管理コンソール)にするには更新が必要です)。

このブログ を見ると、URLScanをIIS 8/8.5にインストールできます。公式サポートの不足が問題にならない場合は。

私は自分自身をテストしていません。手順は次のとおりです。

  • インストールIIS 6メタベース互換性(まだない場合)
  • Isapi Filtersをインストールします(まだない場合)
  • URLScanをインストールします(Webプラットフォームインストーラーからではなく、ダウンロード可能なインストーラーから)
  • iniファイルを介してURLScanを構成します(デフォルトではC:\Windows\System32\inetsrv\urlscan

おそらく、いくつかのiisresetまたは再起動が行われるべきです。 URLScanは、IIS Isapiフィルター間で表示されるはずです

0
Frédéric