<sub id="ndxjt"></sub>

          <track id="ndxjt"><big id="ndxjt"><listing id="ndxjt"></listing></big></track>

                    <sub id="ndxjt"><meter id="ndxjt"></meter></sub>
                     

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

                    http://www.36065980.com 2018年07月27日21:51 浠水網

                    引入

                       每次當瀏覽器向Web服務器發起一個請求的時,都會伴隨著一些HTTP頭的發送.而這些HTTP頭是用于給Web服務器提供一些額外信息以便于處理請求。比如說吧。如果瀏覽器支持壓縮功能,則瀏覽器會發送Accept-Encoding HTTP頭,這樣一來服務器便知道瀏覽器可以使用哪種壓縮算法。還有任何在上一次傳輸中服務端設置的cookies也會通過Cookies HTTP頭來回傳到服務器,瀏覽器還會發送用于讓服務端知道客戶使用的是何種瀏覽器(IE,火狐,Safari等),瀏覽器版本,操作系統以及其他相關信息的User-Agent HTTP頭。

                        同樣,Web服務器也會在發送回客戶端時伴隨著一些HTTP頭,這些HTTP頭可以通知瀏覽器如何生成相應的內容和緩存內容的時間,Web服務器也會發送自身的識別信息,這很像User-Agent HTTP頭,這些頭信息包括Web服務器的版本以及當前使用的ASP.Net的版本.

                        在某些情況下一些HTTP頭是必須的,然而Web服務器的自身識別頭信息卻并不是那么必要,這些信息會讓每次的傳輸多出100字節左右。好吧,我同意100字節單獨來說并不是一個很大的數字,但在傳輸成千上萬次時,這些信息也不可小覷。此外,提供服務器信息也會導致安全問題,有些攻擊者很了解特定的服務器以及特定的Asp.net版本所包含的漏洞,他們會掃描大量服務器然后選擇特定的服務器(譯者按:比如IIS和Asp.net 2.0.50727)來作為他們的攻擊目標。

                         而這篇文章就來講如何刪除這些不必要的HTTP響應頭.

                    觀察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的節點下添加如下內容:

                     

                         是不是非常輕松愉快?

                    移除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;
                    
                    
                    ' VB
                    MvcHandler.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頭并沒有帶來直接的好處,反而小幅加重了寬帶的負擔,所幸的是我們可以通過配置的方式進行移除


                    發表評論
                    上一篇群暉 nas 有些什么基本和好玩的功能?
                    下一篇IIS中http頭的作用
                    正在加載中……
                    湖北快三走势图

                          <sub id="ndxjt"></sub>

                            <track id="ndxjt"><big id="ndxjt"><listing id="ndxjt"></listing></big></track>

                                      <sub id="ndxjt"><meter id="ndxjt"></meter></sub>

                                            <sub id="ndxjt"></sub>

                                              <track id="ndxjt"><big id="ndxjt"><listing id="ndxjt"></listing></big></track>

                                                        <sub id="ndxjt"><meter id="ndxjt"></meter></sub>