34

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 をロードするとき。これを修正するには、どこに/何を設定する必要がありますか?

4

5 に答える 5

12

この回答このウェブサイト:にあるのと同じ方法で、次の手順を使用する必要があります。

C#:

namespace MvcExtensions.Infrastructure
{
    public class CustomServerName : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        }

        public void Dispose() { }

        void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            HttpContext.Current.Response.Headers.Remove("Server");
        }
    }
}

Web.config:

<system.webServer>
   <modules>
      <add name="CustomHeaderModule" type="MvcExtensions.Infrastructure.CustomServerName" />
   </modules>
</system.webServer>
于 2013-12-02T19:29:18.080 に答える
9

これを webconfig に追加することで、すべてのリクエストがマネージド コードを通過するように強制できるはずです。

<modules runAllManagedModulesForAllRequests="true">

次に、静的ファイルであっても、ヘッダー ルールに準拠する必要があります。

于 2013-06-25T18:51:33.557 に答える
5

サーバーの応答ヘッダーを消去するには、IIS UrlRewrite 2.0 を使用します。Web.config ファイルに次のコードを追加します。

 <system.webServer>
<rewrite>
<outboundRules>
<rule name="Remove RESPONSE_Server" >
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>

https://stackoverflow.com/a/12615970/5810078

于 2016-03-22T13:28:43.983 に答える