1. ホーム
  2. asp.net

[解決済み] Azure/IIS7 で UrlScan を使用せずに過剰な HTTP レスポンスヘッダを削除/非表示/無効にする方法

2023-05-10 20:11:13

質問

私は 過剰なヘッダ を削除する必要があります (主に侵入テストに合格するため)。UrlScan を実行するソリューションを調べるのに時間を費やしましたが、これらのソリューションは Azure インスタンスを起動するたびに UrlScan をインストールする必要がある .

startup.cmd からインストーラーをデプロイしない、Azure のための良いソリューションがあるはずです。

レスポンスヘッダが追加されるのは理解していますが 異なる場所 :

  • サーバー : IISによって追加されました。
  • X-AspNet-Version : System.Web.dll により、HttpResponse クラスの Flush 時に追加されます。
  • X-AspNetMvc-バージョン : System.Web.dll の MvcHandler によって追加されました。
  • X-Powered-By : IISによって追加されました。

での "Excessive Headers" 警告を回避するために、HTTP レスポンス ヘッダーを削除/非表示/無効にするように IIS7 を設定する (web.config などで?) 方法はありますか? asafaweb.com IIS モジュールを作成したり、Azure インスタンスが起動するたびに実行する必要のあるインストーラーを配布したりせずに?

どのように解決するのですか?

以下の変更により、Azure でこれらの HTTP レスポンスヘッダを削除することができます。 を使用せずに カスタム HttpModule を書くことなく、これらの HTTP レスポンス ヘッダーを削除できます。

ネット上の情報のほとんどは古く、UrlScan (これはその後 IIS7 に統合されましたが、その際 RemoveServerHeader=1 オプションは削除されました)。以下は、私が見つけた最も巧妙な解決策です (以下のサイトに感謝します)。 このブログ , この回答 そして このブログ を組み合わせたもの)。

を削除するには サーバー を削除するには、Global.asax で Application_PreSendRequestHeaders イベントを見つけ、以下を追加します。 BK このブログ を追加した場合、Cassini / local devで失敗することはありません)。

2014年4月に編集されました。PreSendRequestHeaders および PreSendRequestContext イベントは、ネイティブの IIS モジュールで使用できますが、IHttpModule を実装するマネージドモジュールでは使用しないでください。これらのプロパティを設定すると 非同期リクエスト . 正しいバージョンは BeginRequest イベントを使用することです。

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var application = sender as HttpApplication;
        if (application != null && application.Context != null)
        {
            application.Context.Response.Headers.Remove("Server");
        }
    }

を削除するには X-AspNet-Version を削除するには、web.config の find/create にある <system.web> を見つけて、追加してください。

  <system.web>
    <httpRuntime enableVersionHeader="false" />

    ...

を削除するには X-AspNetMvc-Version を削除するには、Global.asax で Application_Start イベントを見つけ、次のような行を追加します。

  protected void Application_Start()
  {
      MvcHandler.DisableMvcResponseHeader = true;
  }

を削除するには X-Powered-By を削除するには、web.config の find/create で <system.webServer> を見つけて、追加してください。

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

    ...