ASP.NET MVC 開發心得分享 (10):隱藏 MVC 版本編號

分享到噗浪!

在預設的情況下,利用 ASP.NET MVC 技術製作的網站會在 HTTP 回應標頭(Response Header)中包含您目前使用的 ASP.NET MVC 版本編號,雖然目前也只有一版 ( ASP.NET MVC 1.0 ) 沒什麼好隱藏的,不過若基於資安考量希望能隱藏 ASP.NET MVC 送出的版本編號時,就可以利用本篇講的這個小技巧。

在預設的情況下,利用 ASP.NET MVC 技術製作的網站會在 HTTP Response Header 中包含您目前使用的 ASP.NET MVC 版本編號

由於 ASP.NET 3.5 提供的 Routing Module 在網址結構的設定十分彈性,也因此 ASP.NET MVC 在規劃網址結構時甚至可以讓使用者完全看不出來這是用 ASP.NET MVC 開發的網站,這時若隱藏 ASP.NET MVC 的版本編號也能讓多隱藏一些採用技術的細節。

這個技巧十分簡單,只要在 Global.asax.cs 檔案的 Application_Start() 事件方法中加上一行即可:

        protected void Application_Start()
        {
            // 加上此行可隱藏 ASP.NET MVC 版本資訊在 HTTP Header 中出現
            MvcHandler.DisableMvcResponseHeader = true;

            RegisterRoutes(RouteTable.Routes);
        }

就這麼簡單。 ^_^

不過光是這樣實在不夠好玩,我們還可以自訂 HTTP 回應標頭的名稱,你想改成什麼都行,如下圖示。

MvcHandler.MvcVersionHeaderName

不過 MvcHandler.MvcVersionHeaderName 被定義成 靜態唯讀欄位 ( static + readonly ),以致於不能直接修改這個欄位(Field )的內容,必須利用 System.Reflection 機制才能強迫修改這個欄位的內容,如下程式範例:

typeof(MvcHandler)
.GetField("MvcVersionHeaderName")
.SetValue(MvcHandler.MvcVersionHeaderName, "X-TheWillWillWeb-Version");

以上範例純粹好玩,多學點 Reflection 也是不錯的,抽空研究一下吧。

  

此文章由 will 發表於 2009/9/2 下午 12:24:29

永久連結 | 評論 (2) | 此文章的RSSRSS comment feed |

分類: ASP.NET MVC

標籤: , ,

評論

九月 2. 2009 17:18

tony

保哥請問一下:
你 mvc 的書還有計畫要出嗎?等很久了……很期待。

tony 台灣

九月 2. 2009 17:42

will

有耶,只是可能會等到明年直接出 ASP.NET MVC 2.0,出版社說如果年底出書有點尷尬,因為大約明年四月就會推出 ASP.NET MVC 2.0 了,到時可能會跟 .NET 4.0 書系一起推出吧。

will 台灣

新增評論


( 您輸入的Email不會顯示於網站上 )

  Country flag

biuquote
  • 評論
  • 線上預覽
Loading