在ASP.Net和IIS中刪除不必要的HTTP回應標頭

來源:互聯網
上載者:User
觀察Web伺服器的HTTP回應標頭

     為了看到從伺服器和瀏覽器之間通訊的HTTP頭,你需要在瀏覽器安裝一些外掛程式.比如說Fiddler就是一個微軟發布的免費的用於記錄HTTP日誌的軟體。而這些HTTP日誌會包含HTTP頭,在這篇文章中我會假設讀者已經熟悉了這個軟體,假如你並不熟悉這個軟體的話,我推薦閱讀Troubleshooting Website Problems by Examining the HTTP Traffic,這篇文章裡詳細講述了如何安裝&使用Fiddler.

      使用Fiddler,找一個使用IIS和Asp.net的Web伺服器,比如微軟asp.net官方網站,通常在預設情況下,HTTP回應標頭會包含3個Web伺服器的自身識別頭.

  • 伺服器-指定是何種伺服器以及伺服器版本,比如:

    • Server:Microsoft-IIS/6/0
    • Server:Microsoft-IIS/7.0
  • X-Powered-By,用於表示這個網站是“Powered by asp.net”
    • X-Powered-By:ASP.NET
  • X-AspNet-Version,用於指定當前的Asp.net版本,注意就算你使用Asp.net 3.5但在X-AspNet-Version可能會報告使用的是2.0:
    • X-AspNet-Version:2.0.50727
    • X-AspNet-Version:1.1.4322
  • X-AspNetMvc,指定目前的版本的Asp.net MVC(如果使用Asp.net MVC的話):
    • X-AspNetMvc-Version:1.0

       這些伺服器自身識別資訊在大多數情況下並不會被瀏覽器使用,因此可以被安全的移除,這篇文章的餘下部分將會講述如何移除這些HTTP頭

移除X-AspNet-Version HTTP頭

     X-AspNet-Version HTTP頭會告訴全世界我們伺服器當前使用的Asp.net版本,去除這個HTTP頭簡直是小菜一碟,只需要在Web.Config的<system.web>節點下添加如下內容:

<httpRuntime enableVersionHeader="false" />  

     是不是非常輕鬆愉快?

移除X-AspNetMvc-Version HTTP頭

     X-AspNetMvc-Version HTTP頭會自動被Asp.net MVC架構加入進去,如果你沒有使用Asp.net MVC,這個HTTP頭不會存在.移除這個HTTP頭的方式是在Global.asax的Application_Start事件中將MvcHandler類的DisableMvcResponseHeader屬性設定為True

// C#MvcHandler.DisableMvcResponseHeader = true;' VBMvcHandler.DisableMvcResponseHeader = True 
移除X-Powered-By HTTP頭

     
X-Powered-By
HTTP頭並不只是在Asp.net中存在,其他服務端語言,比如PHP,也會包含這個HTTP頭,當Asp.net被安裝時,這個頭會作為一個定製的
HTTP頭插入IIS中,因此,我們需要將這個HTTP頭從IIS的配置中刪除,如果你的網站是在共用的環境下並且沒有使用IIS7並使用管道模式,你不
得不為此聯絡你的空間供應商來幫你移除。(如果你的網站是在IIS7環境下,那你可以通過HTTP Module的形式通過編程來移除)

     在IIS6中移除X-Powered-By HTTP頭:

  1. 啟動IIS Manager
  2. 展開Website目錄
  3. 在Website上點擊右鍵並在彈出的菜單中選擇屬性
  4. 選擇HTTP Header標籤,所有IIS響應中包含的自訂的HTTP頭都會在這裡顯示,只需要選擇響應的HTTP頭並點擊刪除就可以刪除響應的HTTP頭,:

     而在IIS7中移除X-Powered-By HTTP頭的方法是:

  1. 啟動IIS Manager
  2. 展開Website目錄
  3. 選擇你需要修改的網站並雙擊HTTP回應標頭部分
  4. 所有的自訂HTTP頭全在這裡了,刪除相應的頭僅需要點擊右邊的”Remove”連結:

移除Server HTTP頭

   這個HTTP頭會自動附加在當前的IIS相應中,刪除這個HTTP頭可以使用微軟免費的UrlScan工具.

   如果你使用的是IIS7 整合管道模式,你也可以使用HTTP Module來使用編程的方式來去除它。Stefan Grobner's的部落格中IIS 7 - How To Send A Custom "Server" HTTP Header這篇文章詳細講述了如何修改Server HTTP標題.簡單的說,你需要建立一個HTTP Module並為PreSendRequestHeaders事件建立事件處理常式,在這個事件處理常式中的代碼會類似:

HttpContext.Current.Response.Headers.Remove("Server");  

   Howard von Rooijen的文章更深層次的論述了如何在IIS7和整合管道模式中移除Server Http頭,更多細節,請查看:Cloaking your ASP.NET MVC Web Application on IIS 7

小結

    移除伺服器自身識別回應標頭會有如下好處:

  • 這降低了伺服器和瀏覽器之間所需傳輸的資料量
  • 使駭客攻擊伺服器變得更加困難,從而使伺服器更加強壯

    如上的幾個HTTP頭並沒有帶來直接的好處,反而小幅加重了寬頻負擔,所幸的是我們可以通過配置的方式進行移除

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.