• ASP.NET MVCでResponse Headerのサーバーバージョンをどうやって隠しますか?


    本来是发布在客户的Wiki上的,所以用日语写。

    -----------------------------------------------------------------------------

    Response Headerの中に、サーバーのバージョンがデフォルトで表示されていますが、バージョン情報にて既知の脆弱性を突いた攻撃を受ける可能性が高くて、不安全です。

    ASP.NETの場合、同じくResponse Headerにデフォルトで入っているASP.NETバージョンを隠すには、WebRoleのWeb.configファイルで配置していいですが、サーバーバージョンがそう簡単にWeb.configファイルで配置して済めないです。

    ネットで検索された方法を試します。
    WebRoleの「Global.asax.cs」ファイルで、以下のコードを追加します。

    protected void Application_PreSendRequestHeaders() 
    {
        Response.Headers.Remove("Server");
        Response.Headers.Remove("X-AspNet-Version");
        Response.Headers.Remove("X-AspNetMvc-Version");
    }

    正しいのURLでアクセスしてみれば、Response Headerにサーバーのバージョンがなくなりました。
    成功らしいです!!!

    但し、例えば下記のような存在しないリソースをアクセスすると、
    http://domain/test.text
    404エラー画面が表示され、Response Headerにサーバーのバージョンがまた表示されています。

    それは、MVCの場合、サーバーがRequestを受けて、まずRoutesで設定しているURLに一致するかどうかをチェックして、正しいであれば、Application_PreSendRequestHeaders() を実行します。なので、正しいではないURLの場合、Application_PreSendRequestHeadersを実行しないため、ヘッダからServerのバージョンを削除しないです。

    そのため、URLをRoutesにマッピングする前に、ヘッダからServerのバージョンを削除しければなりません。
    以下のコードを追加してみます。
    「Web.config」

    <system.webServer>
        <modules>
          <add name="CustomHeaderModule" 
           type="Test.Module.CustomHeaderModule" />
        </modules>
     </system.webServer>
    

     「CustomHeaderModule.cs」

    namespace Test.Module
    {
        public class CustomHeaderModule : IHttpModule
        {
            public void Init(HttpApplication context)
            {
                context.PreSendRequestHeaders += OnPreSendRequestHeaders;
            }
    
            public void Dispose() { }
    
            void OnPreSendRequestHeaders(object sender, EventArgs e)
            {
                HttpContext.Current.Response.Headers.Remove("Server");
            }
        }
    }

    こうすれば、URLが正しくなくても、Serverのバージョンが削除されます。

  • 相关阅读:
    [php]php设计模式 Command(命令模式)
    [php]php设计模式 Observer(观察者模式)
    [转]Ubuntu 系统安装极点五笔
    [转] 关于开源协议
    上传大小限制设置
    php开启安全模式后禁用的函数
    [php]php设计模式 Template (模板模式)
    [php]php设计模式 Singleton(单例模式)
    [php]php设计模式 Strategy(策略模式)
    [转]调优您的 LAMP 应用程序的 5 种简单方法
  • 原文地址:https://www.cnblogs.com/nonkicat/p/3317454.html
Copyright © 2020-2023  润新知