作者:【日】上野 宣
譯者:于均良
閱讀時(shí)間:2016-01-07~2016-01-17
1、了解Web及網(wǎng)絡(luò)基礎(chǔ)
- HTTP通常被譯成超文本傳輸協(xié)議浆洗,但它實(shí)際上是應(yīng)用層的協(xié)議而不是傳輸層的協(xié)議
參考:OSI七層與TCP/IP五層網(wǎng)絡(luò)架構(gòu)詳解 - 使用ARP協(xié)議憑借MAC地址進(jìn)行通信。
ARP協(xié)議(Address Resolution Protocol)洛口,地址解析協(xié)議买优,可以根據(jù)IP地址反查出對應(yīng)的MAC地址杀赢。
2脂崔、簡單的HTTP協(xié)議
- HTTP是無狀態(tài)協(xié)議砌左,即協(xié)議對于發(fā)送過的請求或響應(yīng)都不做持久化處理汇歹。但為了實(shí)現(xiàn)期望的保持狀態(tài)功能产弹,于是引入了Cookie技術(shù)。
- HTTP中可使用的方法:
(1)GET:獲取資源
(2)POST:傳輸實(shí)體
(3)PUT:傳輸文件。PUT方法自身不帶驗(yàn)證機(jī)制霎烙,任何人都可以上傳文件吼过,存在安全性問題盗忱,因此一般的Web網(wǎng)站不使用該方法趟佃。若配合Web應(yīng)用程序的驗(yàn)證機(jī)制或架構(gòu)設(shè)計(jì)采用REST(表征狀態(tài)轉(zhuǎn)移)標(biāo)準(zhǔn)的同類Web網(wǎng)站,就可能會(huì)開放使用PUT方法序矩。
(4)HEAD:獲得報(bào)文首部
(5)DELETE:刪除文件。特點(diǎn)同PUT方法租幕。
(6)OPTIONS:詢問支持的方法劲绪。服務(wù)器不一定支持所有HTTP協(xié)議的方法,所以可以通過OPTIONS請求查看服務(wù)器支持的HTTP方法有哪些祷安。
(7)TRACE:追蹤路徑凉唐。用來確認(rèn)連接過程中發(fā)生的一系列操作台囱,但該方法易引起XST(跨站追蹤)攻擊,通常是不會(huì)用到的强品。
(8)CONNECT:要求用隧道協(xié)議連接代理。
最常用的就是GET和POST啦,其實(shí)就連GET都很少用的晓淀。
參考:
淺談HTTP中Get與Post的區(qū)別
不再以訛傳訛,GET和POST的真正區(qū)別 - 持久連接
持久連接旨在建立1次TCP連接后進(jìn)行多次請求和響應(yīng)的交互,減少了TCP連接的重復(fù)建立和斷開所造成的額外開銷,減輕了服務(wù)器端的負(fù)載。 - 管線化
持久化連接使得多數(shù)請求以管線化方式發(fā)送成為可能。這樣就能夠做到同時(shí)并行發(fā)送多個(gè)請求宦言,而不需要一個(gè)接一個(gè)地等待響應(yīng)了蜘澜。 - 使用Cookie的狀態(tài)管理
Cookie技術(shù)通過在請求和響應(yīng)報(bào)文中寫入Cookie信息來控制客戶端的狀態(tài)忿晕。Cookie會(huì)根據(jù)從服務(wù)器端發(fā)送的響應(yīng)報(bào)文內(nèi)的一個(gè)叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie谅河。當(dāng)下次客戶端再往該服務(wù)器發(fā)送請求時(shí)吐限,客戶端會(huì)自動(dòng)在請求報(bào)文中加入Cookie值后發(fā)送出去褂始。服務(wù)器端發(fā)現(xiàn)客戶端發(fā)送過來的Cookie后诸典,會(huì)去檢查究竟是從哪一個(gè)客戶端發(fā)來的連接請求,然后對比服務(wù)器上的記錄崎苗,最后得到之前的狀態(tài)信息狐粱。
3、HTTP報(bào)文的HTTP信息
- 發(fā)送多種數(shù)據(jù)的多部分對象集合
HTTP協(xié)議中發(fā)送的一份報(bào)文主體內(nèi)可含有多類型實(shí)體胆数。通常是在圖片或文本文件等上傳時(shí)使用肌蜻。
在HTTP報(bào)文中使用多部分對象集合時(shí),需要在首部字段里加上Content-type必尼。 - 內(nèi)容協(xié)商
內(nèi)容協(xié)商以響應(yīng)資源的語言蒋搜、字符集、編碼方式等作為判斷的基準(zhǔn)判莉。
內(nèi)容協(xié)商技術(shù)有一下三種類型:
(1)服務(wù)器驅(qū)動(dòng)協(xié)商
(2)客戶端驅(qū)動(dòng)協(xié)商
(3)透明協(xié)商
4豆挽、返回結(jié)果的HTTP狀態(tài)碼
200 請求已正常處理
204 請求資源成功,但沒有資源可返回
206 部分資源的請求
301 資源的URI已更新券盅,你也更新下你的書簽引用吧
302 資源的URI已臨時(shí)定位到其他位置了帮哈,姑且算你已經(jīng)知道這個(gè)情況了
303 資源的URI已更新,你是否能臨時(shí)按新的URI訪問
當(dāng)301锰镀、302娘侍、303響應(yīng)狀態(tài)碼返回時(shí)咖刃,幾乎所有的瀏覽器都會(huì)把POST改成GET,并刪除請求報(bào)文的主體私蕾,之后請求會(huì)自動(dòng)再次發(fā)送僵缺。而301、302標(biāo)準(zhǔn)是禁止將POST方法改變成GET方法的踩叭,可實(shí)際使用時(shí)大家都會(huì)這么做磕潮。
304 資源已找到,但未符合條件請求......304雖然被劃分在3XX類別中容贝,但是和重定向沒有關(guān)系自脯。
307 臨時(shí)重定向,和302有著相同的含義斤富,307會(huì)遵照標(biāo)準(zhǔn)膏潮,不會(huì)從POST變成GET。
400 服務(wù)器無法理解這個(gè)請求
401 需要認(rèn)證的請求满力,且認(rèn)證失敗時(shí)焕参,返回該狀態(tài)碼
403 服務(wù)器拒絕該請求,可能是客戶端未獲得文件系統(tǒng)的訪問授權(quán)油额,也可能是訪問權(quán)限出現(xiàn)了某些問題叠纷。
404 服務(wù)器上沒有訪問的資源
500 服務(wù)器端在執(zhí)行請求時(shí)發(fā)生了錯(cuò)誤。
503 服務(wù)器暫時(shí)處于超負(fù)載或正在進(jìn)行停機(jī)維修潦嘶,現(xiàn)在無法處理請求
5涩嚣、與HTTP協(xié)作的Web服務(wù)器
- 代理
代理分緩存代理和透明代理。緩存代理會(huì)預(yù)先將資源的副本(緩存)保存在代理服務(wù)器上掂僵,當(dāng)代理再次接收到對相同資源的請求時(shí)航厚,就可以不從源服務(wù)器那里獲取資源,而是將之前緩存的資源作為響應(yīng)返回锰蓬。 - 網(wǎng)關(guān)
利用網(wǎng)關(guān)可以由HTTP請求轉(zhuǎn)化為其他協(xié)議通信幔睬。 - 隧道
隧道的目的是確保客戶端能與服務(wù)器進(jìn)行安全的通信芹扭。
6麻顶、HTTP首部
- 通用首部字段Cache-Control的no-cache指令和no-store指令:no-cache表示不要緩存過的資源,要源服務(wù)器的資源冯勉;no-store表示緩存服務(wù)器不能緩存請求或響應(yīng)的任何內(nèi)容澈蚌。
- 通用首部字段Connection的作用:控制不再轉(zhuǎn)發(fā)給代理的首部字段摹芙;管理持久連接灼狰。HTTP/1.1之前的HTTP版本默認(rèn)都是非持久連接。所以浮禾,如果想在舊版本的HTTP協(xié)議上維持持久連接交胚,需指定Connection的值為keep-alive.
7份汗、確保Web安全的HTTPS
HTTP的缺點(diǎn):(1)通信使用明文(不加密),內(nèi)容可能會(huì)被竊聽蝴簇;(2)不驗(yàn)證通信方的身份杯活,因此有可能遭遇偽裝;(3)無法證明報(bào)文的完整性熬词,所以有可能已遭篡改
TCP/IP是可能被竊聽的網(wǎng)絡(luò)旁钧,可以通過加密處理來防止被竊聽,加密處理的方式有兩種:一互拾、通信的加密歪今;二、內(nèi)容的加密颜矿。HTTP協(xié)議本身沒有加密機(jī)制寄猩,但是可以通過和SSL(Secure Socket Layer安全套接層)或者TLS(Transport Layer Security 安全層傳輸協(xié)議)的組合使用,對通信進(jìn)行加密骑疆。與SSL組合使用的HTTP被稱為HTTPS或者HTTP over SSL田篇。
SSL是獨(dú)立于HTTP的協(xié)議,所以不光是HTTP箍铭,其他運(yùn)行在應(yīng)用層的SMTP和Telnet等協(xié)議均可配合SSL協(xié)議使用泊柬。可以說SSL是當(dāng)今世界上應(yīng)用最為廣泛的網(wǎng)絡(luò)安全技術(shù)坡疼。
HTTPS采用混合加密機(jī)制:①用公開秘鑰加密方式安全的交換在稍后的共享秘鑰中藥使用的秘鑰彬呻;②確保交換的秘鑰是安全的前提下,使用共享秘鑰加密方式進(jìn)行通信柄瑰。
證書的作用有二:一是用來證明通信一方的服務(wù)器是否規(guī)范闸氮;二是用來確認(rèn)對方服務(wù)器背后的企業(yè)是否真實(shí)存在。EV SSL證書是基于國際標(biāo)準(zhǔn)的認(rèn)證知道方針頒布的證書教沾。持有EV SSL證書的Web網(wǎng)站的瀏覽器地址欄處的背景色是綠色的蒲跨。
8、確認(rèn)訪問用戶身份的認(rèn)證
- BASIC認(rèn)證
- DIGEST認(rèn)證
- SSL客戶端認(rèn)證
- 基于表單認(rèn)證
9授翻、基于HTTP的功能追加協(xié)議
Ajax的解決方法:Ajax(異步JavaScript與XML)是一種有效利用JavaScript和DOM的操作或悲,以達(dá)到局部Web頁面替換加載的異步通信手段。Ajax的核心技術(shù)是名為XMLHttpRequest的API堪唐。
Comet的解決方法:通常巡语,服務(wù)器端接收到請求,處理完畢后立即返回響應(yīng)淮菠,但為了實(shí)現(xiàn)推送功能男公,Comet會(huì)先將響應(yīng)置于掛起狀態(tài),服務(wù)器端一旦有更新合陵,就立即反饋給客戶端枢赔。
Ajax和Comet等提高易用性的技術(shù)一定程度上使HTTP得到了改善澄阳。但HTTP協(xié)議本身的限制也令人束手無策,為了進(jìn)行根本性的改善踏拜,需要有一些協(xié)議層面上的改動(dòng)碎赢,于是出現(xiàn)了SPDY
- 消除HTTP瓶頸的SPDY
SPDY以會(huì)話層的形式加入,介于TCP(SSL)和HTTP之間速梗。使用SPDY之后肮塞,HTTP協(xié)議額外獲得如下功能:
多路復(fù)用流:單一的TCP連接,可以無限處理多個(gè)HTTP請求姻锁。
賦予請求優(yōu)先級:這樣主要是為了在發(fā)送多個(gè)請求時(shí)峦嗤,解決因帶寬低而導(dǎo)致響應(yīng)變慢的問題。
壓縮HTTP首部:這樣一來屋摔,通信時(shí)的流量就變少了烁设。
推送功能:服務(wù)器可直接發(fā)送請求而不必等待客戶端的請求。
服務(wù)器提示功能:可以避免發(fā)送不必要的請求钓试。
SPDY基本上只是將單個(gè)域名的通信多路復(fù)用装黑,所以當(dāng)一個(gè)Web網(wǎng)站上使用了多個(gè)域名下的資源嗦随,改善效果就會(huì)受到限制砂碉。 - 使用瀏覽器進(jìn)行全雙工通信的WebSocket
10、構(gòu)建Web內(nèi)容的技術(shù)
CGI:通用網(wǎng)關(guān)接口漓踢,指Web服務(wù)器在接收到客戶端發(fā)送過來的請求后轉(zhuǎn)發(fā)給程序的一組機(jī)制挽鞠。
11疚颊、Web的攻擊技術(shù)
- 以服務(wù)器為目標(biāo)的主動(dòng)攻擊
主動(dòng)攻擊模式里具有代表性的攻擊是SQL注入和OS命令注入
+以服務(wù)器為目標(biāo)的被動(dòng)攻擊
被動(dòng)攻擊是指利用圈套策略執(zhí)行攻擊代碼的攻擊模式。被動(dòng)攻擊模式中具有代表性的攻擊是跨站腳本攻擊和跨站點(diǎn)請求偽造信认。 - HTTP首部注入攻擊
- HTTP響應(yīng)截?cái)喙?/li>
- 郵件首部注入攻擊
- 目錄遍歷攻擊(路徑遍歷攻擊)
- DoS攻擊:集中利用訪問請求造成資源過載材义,資源用盡時(shí),實(shí)際上服務(wù)也就呈停止?fàn)顟B(tài)嫁赏;通過攻擊安全漏洞使服務(wù)停止