API とサイトをより安全にする取り組みの一環として、サイトの実行内容に関する情報を漏らすヘッダーを削除しています。
ヘッダーを削除する前の例:
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 05 Jun 2013 00:27:54 GMT
Content-Length: 3687
Web.config:
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
Global.asax.cs:
protected void Application_PreSendRequestHeaders() {
Response.Headers.Remove("Server");
Response.Headers.Remove("X-AspNet-Version");
Response.Headers.Remove("X-AspNetMvc-Version");
Response.AddHeader("Strict-Transport-Security", "max-age=300");
Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
}
その後、サイトと API へのすべての呼び出しは、次のように、より安全なヘッダーを返します。
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Date: Wed, 05 Jun 2013 00:27:54 GMT
Content-Length: 3687
ここまでは順調ですね。しかし、静的コンテンツ (loading.gif など) を見ると、まだサーバー ヘッダーが含まれていることに Firebug で気付きました。
HTTP/1.1 304 Not Modified
Cache-Control: no-cache
Accept-Ranges: bytes
Etag: "a3f2a35bdf45ce1:0"
Server: Microsoft-IIS/8.0
Date: Tue, 25 Jun 2013 18:33:16 GMT
これはIISによって何らかの形で処理されていると思いますが、そのヘッダーを削除する場所が見つかりません。私は追加しようとしました:
<remove name="Server" />
上記のように、Web.config の httpProtocol/customHeaders セクションに追加します。また、IIS マネージャーの HTTP 応答ヘッダー セクションに移動して、サーバー ヘッダーに偽の名前と値のペアを追加しようとしました。どちらの場合も、まだ返されます
Server: Microsoft-IIS/8.0
画像、CSS、または JS をロードするとき。これを修正するには、どこに/何を設定する必要がありますか?