zoukankan      html  css  js  c++  java
  • 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のバージョンが削除されます。

  • 相关阅读:
    利用Python 统计txt 文档词频 次数
    Markdown工具Typora结合gitee码云图床自动上传云端图片
    主数据MDM下发eHR系统操作整理v1.0
    Python读取Excel数据生成图表 v2.0
    HTML基础(20200610)
    Python网络编程socket 简易聊天窗
    selenium-python-验证码-动态验证码
    selenium-python-验证码-滑动验证码
    Linux系统学习 20200506
    @Mapper @Insert 注解式方法批量入库(ORACLE数据库)
  • 原文地址:https://www.cnblogs.com/nonkicat/p/3317454.html
Copyright © 2011-2022 走看看