Http頭Hostname攻擊漏洞?
其實(shí)HTTP請(qǐng)求頭中的HostName漏洞攻擊很早就存在了,但無(wú)論是運(yùn)維還是開發(fā)人員對(duì)這個(gè)漏洞了解不深,也不夠重視,一般情況下,此漏洞危害并不大。
HTTP頭信息HostName漏洞分析在說這個(gè)漏洞之前我們先簡(jiǎn)單說下HTTP協(xié)議,我們?cè)诎l(fā)起HTTP請(qǐng)求時(shí),其請(qǐng)求報(bào)文由下面幾分部組成:
請(qǐng)求行
請(qǐng)求頭(Header)
空行
請(qǐng)求體(請(qǐng)求數(shù)據(jù))
其中,請(qǐng)求頭的作用就是通知服務(wù)器有關(guān)客戶端請(qǐng)求的信息,它是由關(guān)鍵字/值對(duì)組成的,常用請(qǐng)求頭參數(shù)有:
User-Agent:標(biāo)記請(qǐng)求的瀏覽器類型
Accept:告訴服務(wù)器端客戶端可識(shí)別的文件類型有哪些
Host:告訴服務(wù)器端客戶端請(qǐng)求的主機(jī)名是什么
一個(gè)最簡(jiǎn)單的請(qǐng)求報(bào)文可能是這樣的:
GET / HTTP/1.1Host: http://www.wukong.com請(qǐng)求頭中的Host本意告訴服務(wù)器端要訪問的是哪個(gè)域名(因?yàn)橐慌_(tái)服務(wù)器上可能會(huì)建立多個(gè)站點(diǎn)、使用多個(gè)域名),但服務(wù)器端的代碼有時(shí)也需要獲取這個(gè)Host(比如拼裝URL),在這種情況下就存在漏洞了,因?yàn)槲覀儾荒鼙WC客戶端發(fā)送過來的Host頭信息就一定是合法的。
HostName漏洞防御方案HostName漏洞防御是比較容易的,主要有兩種方法:
1、程序代碼中若必須獲取HostName請(qǐng)求頭,那一定要做必要的數(shù)據(jù)檢查,防止拼接字符串輸出后產(chǎn)生XSS等。
2、Web站點(diǎn)顯式綁定域名,避免空主機(jī)頭的存在
當(dāng)多個(gè)站點(diǎn)部署在同一臺(tái)服務(wù)器上時(shí),因?yàn)榉?wù)器IP可能只有一個(gè),而網(wǎng)站端口也都是80,那服務(wù)器怎么知道你訪問的是哪一個(gè)網(wǎng)站呢?靠的就是請(qǐng)求頭中的HostName,所以我們將站點(diǎn)顯式綁定域名,防止通過IP的方式可以訪問某個(gè)網(wǎng)站,這樣偽造的HostName是找不到對(duì)應(yīng)站點(diǎn)的,也就不存在漏洞了。
以上就是我的觀點(diǎn),對(duì)于這個(gè)問題大家是怎么看待的呢?歡迎在下方評(píng)論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),歡迎關(guān)注我了解更多科技知識(shí)!