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