web安全(一)http協(xié)議

2.1http協(xié)議解析

? ? ? ?HTTP:超文本傳輸協(xié)議,是一種規(guī)范了瀏覽器與服務(wù)器之間互相通信的規(guī)則。

2.1.1發(fā)起http請求

? ? ? ?瀏覽器地址欄輸入一個URL就發(fā)起了http請求钦铁。URL(統(tǒng)一資源定位符)即網(wǎng)頁地址。
URL的標(biāo)準(zhǔn)如下:

協(xié)議://服務(wù)器IP[:端口]/路徑/[?查詢]

在某些方面而言萧芙,瀏覽器在http協(xié)議方面只不過多了HTML渲染的功能阱冶,讓用戶看到更直觀的界面醋安。

2.1.2HTTP協(xié)議詳解

? ? ? ?HTTP是一種無狀態(tài)的協(xié)議侥啤。無狀態(tài)是指web瀏覽器與web服務(wù)器之間不需要建立持久的鏈接,這意味著當(dāng)一個客戶端向服務(wù)器端發(fā)出請求茬故,然后web服務(wù)器返回響應(yīng)(Response)盖灸,連接就被關(guān)閉了。在服務(wù)器端不保留連接有關(guān)信息磺芭。HTTP請求只能由客戶端發(fā)起赁炎,而服務(wù)器不能主動向客戶端發(fā)送數(shù)據(jù)。
? ? ? ?HTTP遵循請求(Request)/應(yīng)答(Response)模型钾腺。


image.png

通過實(shí)例來學(xué)習(xí)HTTP請求與響應(yīng)

1.HTTP請求與響應(yīng)徙垫。

(1)HTTP請求
? ? ? ?HTTP請求包括三部分,分別是請求行(請求方法)放棒,請求頭(消息報頭)和請求正文姻报。

POST /login.php HTTP/1.1                                      //請求行
Host: www.xxser.com                                         //請求頭
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 
                                                    //空白行,表示請求頭結(jié)束
Username=admin&password=admin                   //請求正文

? ? ? ?請求行由三部分組成间螟,第一部分說明是POST請求吴旋。第二部分/login.php 說明是該域名根目錄下的login.php损肛。第三部分使用的是HTTP1.1版本。
? ? ? ?第二行至空白行為HTTP中的請求頭(消息頭)荣瑟。其中Host代表請求的主機(jī)地址治拿,User-Agent代表瀏覽器的標(biāo)識。

(2)HTTP響應(yīng)
? ? ? ?HTTP響應(yīng)也由三部分內(nèi)容組成笆焰。分別是響應(yīng)行劫谅,響應(yīng)頭(消息報頭)和響應(yīng)正文(消息主題)。

HTTP/1.1 200 OK                                           //響應(yīng)行
Date: Sun, 28 Jan 2018 09:55:48 GMT         //響應(yīng)頭
Server: BWS/1.0
Content-Length: 97
Content-Type: text/html; charset=utf-8
Cache-Control: private
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Encoding:gzip
Set-Cookie: _m7e_session=a797ede0c2a3193d03c77d875e462e3f; path=/; expires=Sun, 28 Jan 2018 15:55:48 -0000; HttpOnly
Connection: Keep-Alive
//空白行代表響應(yīng)頭結(jié)束
<html>                                              //響應(yīng)主題又叫消息主題
<head><title>··················

? ? ? ?HTTP響應(yīng)的第一行為響應(yīng)行嚷掠,其中有HTTP版本捏检,狀態(tài)嗎(200)以及消息ok。
? ? ? ?第二行至末尾的空白為響應(yīng)頭不皆,由服務(wù)器向客戶端發(fā)送贯城。
? ? ? ?消息報頭之后是響應(yīng)正文,是服務(wù)器端向客戶端發(fā)送的HTML數(shù)據(jù)粟焊。

2.HTTP請求方法

? ? ? ?HTTP請求的方法非常多冤狡,以GEt孙蒙,POST最常見项棠。
(1)GET
? ? ? ?GET方法用戶獲取請求頁面的指定信息(以實(shí)體的格式)。如果請求資源為動態(tài)腳本(非HTML)挎峦,那么返回文本是web容器解析后的HTML源代碼香追,而不是源文件。例如請求index.jsp,返回的不是index.jsp的源文件坦胶,而是解析后的html代碼透典。

GET /index.php?id=1  HTTP/1.1
HOST: www.xxser.com

? ? ? ?使用GET請求index.php,并且id參數(shù)為1顿苇,在服務(wù)器端監(jiān)本語言中可以選擇性地接手這些參數(shù)峭咒,比如id=1&name=admin,一般都是由開發(fā)者內(nèi)定好的參數(shù)項(xiàng)目才會接收纪岁,比如開發(fā)者只接收id參數(shù)項(xiàng)目凑队,若加了其他參數(shù)項(xiàng),如:

index.php?id=1&username=admin    //多個參數(shù)以“&”分隔

服務(wù)器端腳本不會理會你加入的內(nèi)容幔翰,依然只會接收id參數(shù)漩氨,并且去查詢數(shù)據(jù),最終向服務(wù)器端發(fā)送解析過的HTML數(shù)據(jù)遗增,不會因?yàn)槟愕母蓴_而亂套叫惊。
(2)POST
? ? ? ?post方法與GET類似,但最大的區(qū)別在于做修,GET方法沒有請求內(nèi)容霍狰,而POST是有請求內(nèi)容的抡草。POSt請求最多用于向服務(wù)器發(fā)送大量數(shù)據(jù)。GET有大序镜ⅰ(長度)限制渠牲,并且GET請求會將發(fā)送的數(shù)據(jù)顯示在瀏覽器端,但是POST是不會的步悠。

3.HTTP狀態(tài)碼
HTTP/1.1   200  ok         //響應(yīng)行

HTTP協(xié)議中狀態(tài)碼由三維數(shù)字組成签杈,第一位數(shù)字定義了響應(yīng)的類別,且只有以下五種鼎兽。

  • 1xx:信息提示答姥,表示成功已被成功接收,繼續(xù)處理谚咬。范圍100~101.
  • 2xx:成功鹦付,服務(wù)器成功地處理了請求。其范圍為200~206.
  • 3xx:重定向择卦,重定向狀態(tài)碼用于告訴客戶端敲长,它訪問的資源已被移動,并告訴客戶端新的資源地址位置秉继。這時沒瀏覽器將重新對新資源發(fā)起請求祈噪。其范圍300~305.
  • 4xx:客戶端錯誤狀態(tài)碼,又是客戶端會發(fā)送一些服務(wù)器無法處理的東西尚辑。范圍400~415.
  • 5xx:又是客戶端發(fā)送一條有效請求辑鲤,但web服務(wù)器自身出錯了。5xx是用來描述服務(wù)器內(nèi)部錯誤的杠茬,其范圍為500~505月褥。

常見的狀態(tài)碼描述如下。
200:客戶端請求成功瓢喉,是最常見的狀態(tài)宁赤。
302:重定向。
404:請求資源不存在栓票,是最常見的狀態(tài)决左。
400:客戶端請求語法錯誤,不能被服務(wù)器所理解逗载。
401:請求未經(jīng)授權(quán)哆窿。
403:服務(wù)器收到請求,但是拒絕提供服務(wù)厉斟。
500:服務(wù)器內(nèi)部錯誤挚躯,是最常見的狀態(tài)。
503:服務(wù)器當(dāng)前不能處理客戶端的請求擦秽,一段時間后可能恢復(fù)正常码荔。

4.HTTP消息

? ? ? ?HTTP消息又稱為HTTP頭漩勤,由四部分組成,分別是請求頭缩搅,響應(yīng)頭越败,普通頭和實(shí)體頭。
(1)請求頭
? ? ? ?請求頭只出現(xiàn)在HTTP請求中硼瓣,請求報頭允許客戶端向服務(wù)器端傳遞請求的附加信息和客戶端自身的信息究飞。
①Host
? ? ? ?Host請求報頭域主要用于指定被請求資源的Interbet主機(jī)和端口號,例如:HOST:www.xxser.com:801
②User-Agent
? ? ? ?User-Agent請求報頭域允許客戶端將他的操作系統(tǒng)堂鲤,瀏覽器和其他屬性告訴服務(wù)器亿傅。
③Refere
? ? ? ?Referer包含一個URL,代表當(dāng)前訪問URL的上一個URL瘟栖,也就是說用戶是從什么地方來到當(dāng)前頁面葵擎。
④Cookies
? ? ? ?Cookies是非常重要的請求頭,她是一段文本半哟,常用來表示請求者身份等酬滤。
⑤Range
? ? ? ?Range可以請求實(shí)體的部分內(nèi)容,多線程下載一定會用到此請求頭寓涨。
⑥X-forweard-for
? ? ? ?X-forweard-for即XXF頭盯串,它代表請求端的IP,可以有多個缅茉,中間由逗號隔開嘴脾。
⑦Accept
? ? ? ?Accept請求報頭域用于指定客戶端接手那些MIME類型的信息男摧,如Accept:text/html蔬墩,表明客戶端希望接收HTML文本。
⑧Accept-Charset請求報頭域用于指定客戶端接收的字符集耗拓。例如:Accept-Charset:iso-8859-1拇颅,gb2312。如果在請求消息中設(shè)置這個域乔询,默認(rèn)是任何字符集都可以接收樟插。

(2)響應(yīng)頭
? ? ? ?響應(yīng)頭是服務(wù)器根據(jù)請求向客戶端發(fā)送的HTTP頭。
①Server
? ? ? ?服務(wù)器所使用的Web服務(wù)器名稱竿刁,如Server:Apache/1.3.6(Unix)黄锤,攻擊者通過查看此頭,可以探測web服務(wù)器名稱食拜。所以鸵熟,建議服務(wù)器端修改此頭信息。
②Set-Cookie
? ? ? ?向客戶端設(shè)置Cookie负甸,通過查看此頭流强,可以清楚看到服務(wù)器向客戶端發(fā)送的Cooie信息痹届。
③Last-Modified
? ? ? ?服務(wù)器通過這個頭告訴瀏覽器,資料的最后修改時間打月。
④Location
? ? ? ?服務(wù)器通過這個頭告訴瀏覽器去訪問那個頁面队腐,瀏覽器接收到這個請求之后,通常會立刻訪問localtion頭所指向的頁面奏篙。這個頭通常配合302狀態(tài)碼使用柴淘。
⑤Refresh
? ? ? ?服務(wù)器通過Refresh頭告訴瀏覽器定時刷新瀏覽器。

(3)普通頭
? ? ? ?在普通報頭中秘通,有少數(shù)報頭域用于所有請求和響應(yīng)消息 悠就,但并不用于被傳輸?shù)膶?shí)體,只用于傳輸?shù)南ⅰ?br> 例如:Date充易,表示消息產(chǎn)生的日期和時間梗脾。Connection,允許發(fā)送指定連接的選項(xiàng)盹靴。例如炸茧,指定連接是連續(xù)的,或者指定連接“close”選項(xiàng)稿静,通知服務(wù)器梭冠,在響應(yīng)完成后,關(guān)閉連接改备。Cache-Control控漠,用于指定緩存指令,緩存指令是單向的悬钳,且是獨(dú)立的盐捷。
注意:普通報頭了解即可。

(4)實(shí)體頭
? ? ? ?請求和響應(yīng)消息都可以傳送一個實(shí)體頭默勾。實(shí)體頭定義了關(guān)于實(shí)體正文和請求所表示的資源的元信息碉渡。元信息也就是實(shí)體內(nèi)容的屬性,包括實(shí)體信息類型母剥、長度滞诺、壓縮方法、最后一次修改時間等环疼。常見的實(shí)體頭如下习霹。
①Content-Type
? ? ? ?Content-Type實(shí)體頭用于向接收方指示實(shí)體的介質(zhì)類型。
②Content-Encoding
? ? ? ?Content-Encoding頭被用作媒體類型的修飾符炫隶,它的值指示了已經(jīng)被應(yīng)用到實(shí)體正文的附加內(nèi)容的編碼淋叶,因而要獲得中Content-Type報頭域所引用的媒體類型,必須采用相應(yīng)的解碼機(jī)制等限。
③Content-Length
? ? ? ?Content-Length實(shí)體報頭用于指明實(shí)體正文的長度爸吮,以字節(jié)方式儲存的十進(jìn)制數(shù)字來表示芬膝。
④Last-Modified
? ? ? ?Last-Modified實(shí)體報頭用于指示資源的最后修改日期和時間。

2.1.4HTTP協(xié)議與HTTPS協(xié)議的區(qū)別

? ? ? ?HTTPS協(xié)議是以安全為目標(biāo)的HTTP通道形娇,其實(shí)就是HTTP的“升級”版本锰霜,只是它單純的比HTTP協(xié)議更安全。

? ? ? ?HTTPS的安全基礎(chǔ)是SSL桐早,即在HTTP下加入SSL層癣缅。也就是HTTPS通過安全傳輸機(jī)制進(jìn)行數(shù)據(jù)傳輸,這種機(jī)制可保護(hù)網(wǎng)絡(luò)傳送的所有數(shù)據(jù)的隱秘性與完整性哄酝,可以降低非侵入性攔截攻擊的可能性友存。
HTTP協(xié)議與HTTPS協(xié)議的主要區(qū)別如下:

  • HTTP是超文本傳輸協(xié)議,信息是明文傳輸陶衅,HTTPS則是具有安全性的SSL加密傳輸協(xié)議屡立。
  • HTTP與HTTPS協(xié)議使用的是完全不同的連接方式,HTTP采用80端口連接搀军,而HTTPS則是443端口膨俐。
  • HTTPS協(xié)議需要到ca申請證書,一般免費(fèi)的證書很少罩句,需要交費(fèi)焚刺,也有些web容器提供,如TOMCAT门烂。而HTTP協(xié)議卻不需要乳愉。
  • HTTP連接相對簡單,是無狀態(tài)的屯远,而HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的課進(jìn)行加密傳輸蔓姚、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,相對來說氓润,它要比HTTP協(xié)議更安全赂乐。
    ? ? ? ?
    ? ? ? ?
    ? ? ? ?
    ? ? ? ?本文大部分內(nèi)容摘自web安全深度剖析薯鳍,特為啄木鳥網(wǎng)絡(luò)安全工作室新社員編寫咖气,適合小白快速學(xué)習(xí)使用。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挖滤,一起剝皮案震驚了整個濱河市崩溪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌斩松,老刑警劉巖伶唯,帶你破解...
    沈念sama閱讀 210,835評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惧盹,居然都是意外死亡乳幸,警方通過查閱死者的電腦和手機(jī)瞪讼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粹断,“玉大人符欠,你說我怎么就攤上這事∑柯瘢” “怎么了希柿?”我有些...
    開封第一講書人閱讀 156,481評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長养筒。 經(jīng)常有香客問我曾撤,道長,這世上最難降的妖魔是什么晕粪? 我笑而不...
    開封第一講書人閱讀 56,303評論 1 282
  • 正文 為了忘掉前任挤悉,我火速辦了婚禮,結(jié)果婚禮上巫湘,老公的妹妹穿的比我還像新娘尖啡。我一直安慰自己,他們只是感情好剩膘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評論 5 384
  • 文/花漫 我一把揭開白布衅斩。 她就那樣靜靜地躺著,像睡著了一般怠褐。 火紅的嫁衣襯著肌膚如雪畏梆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,729評論 1 289
  • 那天奈懒,我揣著相機(jī)與錄音奠涌,去河邊找鬼。 笑死磷杏,一個胖子當(dāng)著我的面吹牛溜畅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播极祸,決...
    沈念sama閱讀 38,877評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼慈格,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了遥金?” 一聲冷哼從身側(cè)響起浴捆,我...
    開封第一講書人閱讀 37,633評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稿械,沒想到半個月后选泻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,088評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評論 2 326
  • 正文 我和宋清朗相戀三年页眯,在試婚紗的時候發(fā)現(xiàn)自己被綠了梯捕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,563評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡窝撵,死狀恐怖科阎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情忿族,我是刑警寧澤锣笨,帶...
    沈念sama閱讀 34,251評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站道批,受9級特大地震影響错英,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隆豹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評論 3 312
  • 文/蒙蒙 一椭岩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧璃赡,春花似錦判哥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至侯谁,卻和暖如春锌仅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背墙贱。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評論 1 264
  • 我被黑心中介騙來泰國打工热芹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惨撇。 一個月前我還...
    沈念sama閱讀 46,240評論 2 360
  • 正文 我出身青樓伊脓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親魁衙。 傳聞我的和親對象是個殘疾皇子报腔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,333評論 6 152
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng)纺棺,內(nèi)容來源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,210評論 3 82
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理榄笙,服務(wù)發(fā)現(xiàn),斷路器祷蝌,智...
    卡卡羅2017閱讀 134,626評論 18 139
  • 引言 HTTP是一個屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡捷帆卓、快速的方式巨朦,適用于分布式超媒體信息系統(tǒng)米丘。它于1990年...
    _燴面_閱讀 1,324評論 0 9
  • 在好基友家里住拄查,他8點(diǎn)左右回來的。他在屋里打掃衛(wèi)生棚蓄,有一搭無一搭的聊著堕扶。然后他接了個電話,掛掉后要出去梭依。我問:“誰...
    用屁股思考2017閱讀 1,517評論 0 1