軟件測(cè)試 | 使用TamperData觀察實(shí)時(shí)的響應(yīng)頭
問(wèn)題
響應(yīng)頭是在服務(wù)器發(fā)送頁(yè)面的HTML代碼之前,從服務(wù)器發(fā)送到瀏覽器。這些頭信息包含著關(guān)于下列內(nèi)容的有用信息:服務(wù)器希望的通信方式,頁(yè)面類型,以及諸如截止日期和內(nèi)容類型這樣的元數(shù)據(jù)。響應(yīng)是獲取Web應(yīng)用的先關(guān)信息的絕佳來(lái)源,對(duì)于我們想通過(guò)它實(shí)現(xiàn)的特殊功能來(lái)說(shuō),尤其如此。
響應(yīng)頭是攻擊者用于查找應(yīng)用特有信息的地方。與你的Web服務(wù)器和平臺(tái)相關(guān)的信息將會(huì)作為標(biāo)準(zhǔn)請(qǐng)求的一部分被泄露出去。
解決方案
正如3.3節(jié)中所提到的,你可以在請(qǐng)求頭旁邊找到響應(yīng)頭,也可以通過(guò)代理來(lái)找到頭信息,比如WebScarb。我們將利用這項(xiàng)任務(wù)來(lái)向你介紹TamperData,它是一個(gè)方便的工具,可以用在這項(xiàng)任務(wù)和其他幾項(xiàng)任務(wù)中。
按照2.2節(jié),安裝TamperData。它的安裝方法與大多數(shù)附加組件相同。
從“工具”菜單中打開(kāi)TamperData,然后瀏覽到某個(gè)頁(yè)面。在TamperData窗口中,你會(huì)發(fā)現(xiàn)它列舉出了訪問(wèn)過(guò)的頁(yè)面,這與WebScarab和FireBug是一樣的。單擊某個(gè)頁(yè)面,就會(huì)顯示出請(qǐng)求頭和響應(yīng)頭,如圖3-12所示。

討論
響應(yīng)頭和響應(yīng)本身之間存在著差別。響應(yīng)頭描述響應(yīng),它們是元數(shù)據(jù)。例如,響應(yīng)頭通常會(huì)包含以下內(nèi)容:
狀態(tài)(Status)
內(nèi)容類型(Content-Type)
內(nèi)容編碼(Content-Encoding)
內(nèi)容長(zhǎng)度(Content-Length)
截止日期(Expire)
追后修改時(shí)間(Last-Modified)
多年來(lái),響應(yīng)頭有所演化,因此,最初的規(guī)范(可以從http:///http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html訪問(wèn))只對(duì)其中某些項(xiàng)(比如狀態(tài))而言是正確的。
另外,有些響應(yīng)頭會(huì)顯示。服務(wù)器軟件以及響應(yīng)發(fā)出的日期和時(shí)間。如果你允許Internet上的每個(gè)人看到你正在使用的服務(wù)器和平臺(tái),那么現(xiàn)在就應(yīng)該確保你安裝了最新的補(bǔ)丁,并阻止了一切已知的漏洞。
請(qǐng)?zhí)貏e注意Content-Type頭信息。大多數(shù)時(shí)間它只不過(guò)是像“text/html;charset=UFT-8”這樣的內(nèi)容,表示正常的HTML響應(yīng)和編碼。不過(guò),它也可能引用外部應(yīng)用或引起異常的瀏覽器行為,而這些異常之處正式攻擊可能悄悄潛入的地方。
例如,已知有些舊版的PDF閱讀器會(huì)執(zhí)行通過(guò)查詢字符串傳入的JavaScript(詳細(xì)情況請(qǐng)?jiān)L問(wèn)http://www.adobe.com/support/security/advisories/apsa07-01.html)。如果你的應(yīng)用提供PDF,那么它是直接將Content-Type設(shè)置為applicant/pdf嗎?又或者它設(shè)置了Content-Disposition頭信息,要求用戶先下載PDF,從而避免了任何JavaScript趁虛而入?
動(dòng)態(tài)重定向是另一項(xiàng)危險(xiǎn)的特性,因?yàn)樗鼈兛赡軙?huì)被攻擊者用來(lái)將惡意網(wǎng)站的鏈接偽裝成你的網(wǎng)站的鏈接,從而濫用了用戶對(duì)你的網(wǎng)站的信任。作為鏈接,動(dòng)態(tài)重定向通常具有如下形式:
http://www.example.com/reirect.php?url=http://ha.ckers.org
可以看到,這些細(xì)節(jié)可能很難對(duì)付。如果你的應(yīng)用使用某種特殊的頭信息來(lái)處理文件上傳、下載、重定向或任何其他事務(wù),那么請(qǐng)確保研究了所有具體的安全防范措施,因?yàn)閷?shí)際的危險(xiǎn)要比這里所能列出的還要多。
新的響應(yīng)頭仍在不斷地被開(kāi)發(fā)出來(lái)。TrackBack、PingBack和RefBack是一種新的、通常被稱為L(zhǎng)inkBack的Web功能的相互競(jìng)爭(zhēng)的標(biāo)準(zhǔn)。這些LinkBack提供了一種雙向的鏈接功能。它們因?yàn)橛狭水?dāng)前的博客熱而備受歡迎。
例如,如果Fred從自己的博客鏈接到Wilma的博客,那么他們的博客托管服務(wù)可以使用某種標(biāo)準(zhǔn)進(jìn)行通信,于是Wilma的博客將顯示Fred鏈接到她的博客。HTTP頭可幫助識(shí)別使用的是哪些標(biāo)準(zhǔn),并傳送鏈接信息。