網(wǎng)絡(luò)安全攻防:Web安全之HTTP協(xié)議
超文本傳輸協(xié)議(HTTP,Hyper Text Transfer Protocol)是訪(fǎng)問(wèn)萬(wàn)維網(wǎng)使用的核心通信協(xié)議,也是今天所有Web應(yīng)用都會(huì)使用的協(xié)議。HTTP協(xié)議雖然被廣泛應(yīng)用于Web應(yīng)用之中,但由于其傳輸時(shí)的不安全性,之后將被HTTPS協(xié)議逐步替代。
在最初的時(shí)候,HTTP 只是一個(gè)為獲取基于文本的靜態(tài)資源而開(kāi)發(fā)的一個(gè)簡(jiǎn)單協(xié)議,后來(lái)隨著Web應(yīng)用的興起,人們以各種形式擴(kuò)展和利用它,使其能夠支持如今常見(jiàn)的復(fù)雜分布式應(yīng)用。
HTTP機(jī)制:客戶(hù)端發(fā)送一條請(qǐng)求,然后服務(wù)端返回一條響應(yīng)消息。該協(xié)議是基于TCP/IP協(xié)議的傳輸協(xié)議。
1. HTTP請(qǐng)求
我們可以在瀏覽器的控制臺(tái)上查看 HTTP 的請(qǐng)求頭部分的信息。例如,輸入網(wǎng)址http://www.example.com,然后再按F12打開(kāi)控制臺(tái),如圖1所示。
圖1 HTTP請(qǐng)求頭
可以從圖1中看出請(qǐng)求頭大致的組成部分如下。
(1)訪(fǎng)問(wèn)方法,最常用的方法為GET,它的主要作用是從Web服務(wù)器獲取一個(gè)資源。
(2)所請(qǐng)求的URL地址。
(3)使用的HTTP版本。Internet最常有的HTTP版本為1.0和1.1,而兩者最主要的區(qū)別是在攻擊Web程序時(shí),HTTP1.1的版本必須使用Host請(qǐng)求頭。
(4)User-Agent消息頭提供與瀏覽器或其他生成請(qǐng)求的客戶(hù)軟件相關(guān)的信息。
(5)Host消息頭用于指定出現(xiàn)在被訪(fǎng)問(wèn)的完整URL中的主機(jī)名稱(chēng)。
(6)Cookie消息頭用于提交服務(wù)器向客戶(hù)端發(fā)布的參數(shù)。
2. HTTP響應(yīng)
對(duì)應(yīng)于前面提到的HTTP請(qǐng)求,在瀏覽器中也可以找到響應(yīng)頭的信息,如圖2所示。
圖2 響應(yīng)頭信息
響應(yīng)頭中有部分信息與請(qǐng)求頭中是一樣的,如HTTP的版本。
響應(yīng)頭往往表示請(qǐng)求結(jié)果的狀態(tài)碼,200是最正常的狀態(tài)碼。
響應(yīng)頭還有如下的幾個(gè)要點(diǎn):Server消息頭,指明所使用Web服務(wù)器軟件;Content-Length消息頭規(guī)定消息主題的字節(jié)長(zhǎng)度。
3. HTTP方法
在攻擊Web應(yīng)用程序時(shí),最常用的兩個(gè)方法為GET和POST。
GET方法的作用為獲取資源。它可以在URL中以查詢(xún)字符串的形式向所請(qǐng)求的資源發(fā)送參數(shù)。
POST方法的作用為執(zhí)行操作。使用這個(gè)方法可以在URL查詢(xún)字符串與消息主體中發(fā)送請(qǐng)求參數(shù)。
在傳輸數(shù)據(jù)方面,POST方法比GET方法有效。GET傳輸?shù)臄?shù)據(jù)不大于2 KB,而POST傳輸?shù)臄?shù)據(jù)量較大,一般默認(rèn)沒(méi)有限制。但理論上,IIS4中最大的量為80 KB,IIS5為100 KB。并且GET方法的安全性比較低,POST方法會(huì)將數(shù)據(jù)進(jìn)行加密,所以會(huì)比較安全。另一點(diǎn)就是POST方法的執(zhí)行效率比GET方法要高。