IIS 8.0/8.5のサーバーヘッダー応答を削除するにはどうすればよいですか?
現在のサーバーレポート:Microsoft-IIS/8.0
Microsoft-IIS/8.5
IIS 7.0では、URLScan 3.1を使用しましたが、これはIIS 7.0でのみサポートされ、8.xではサポートされません。
別の解決策がありますが、私の意見では、この解決策は最良かつ安全です。
Microsoftが作成したUrlRewriteモジュールを使用できます。 Url RewriteモジュールはURLをリダイレクトし、応答ヘッダー内のIISサーバー名を変更することもできます。
リダイレクトプロパティを使用する必要はありません。サーバーヘッダー値を変更するだけで使用できます。
手順は次のとおりです。
最初に、次のリンクからUrlRewriteモジュールをダウンロードします: http://www.iis.net/downloads/Microsoft/url-rewrite およびIISにインストールしますサーバ。その後、cmdコンソールでこのコマンドでIISを再起動します
iisreset /restart
<system.WebServer>
タグの下のWeb設定ファイルに次のアイテムを追加します。値項目には、サーバー名として何でも書き込むことができます。
最後に、データのヘッダーのIISバージョン名を変更しました。 IISを再起動します。 cmdコンソール経由。
ボーナス:Webサイトをテストして、機能するかどうかを確認したい場合... mozilla firefoxプラグイン「HttpRequester」を使用できます。このプラグインの場合: https://addons.mozilla.org/En-us/firefox/addon/httprequester/
PS:私はそれをテストし、IISサーバーで動作しました。 Visual Studioによってtemproray IISサーバーが作成されていません。
残念ながら、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
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を更新する必要があります。
これは非常に簡単です。カスタムモジュールを作成するだけです:
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>
上記の問題については、Global.asax.csに以下のコードを追加してください
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
Response.AddHeader("Sample1", "Value1");
}
多くのブラウジング後に問題が解決しました。
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にインストールできます。公式サポートの不足が問題にならない場合は。
私は自分自身をテストしていません。手順は次のとおりです。
ini
ファイルを介してURLScanを構成します(デフォルトではC:\Windows\System32\inetsrv\urlscan
)おそらく、いくつかのiisreset
または再起動が行われるべきです。 URLScanは、IIS Isapiフィルター間で表示されるはずです