1. 程式人生 > >《圖解HTTP》讀書筆記(轉)

《圖解HTTP》讀書筆記(轉)

reference:https://www.cnblogs.com/edisonchou/p/6013450.html

 

   

  目前國內講解HTTP協議的書是在太少了,記憶中有兩本被譽為經典的書《HTTP權威指南》與《TCP/IP詳解,卷1》,但內容晦澀難懂,學習難度較大。其實,HTTP協議並不複雜,理解起來也不會花費太多學習成本,這本書的出現就及時緩解了該問題。對基礎及核心部分的深入學習是成為一名專業技術人員的前提,以不變應萬變才是立足之本。此外,這本書也是我的2016年度讀書計劃中的一本,它和《圖解TCP/IP》一起作為計算機網路基礎部分為我溫故知新了一把,謝謝作者和譯者,畫了這麼多圖解讓我們理解。

一、HTTP協議初探

  1.1 各種協議與HTTP協議的關係

  1.2 請求處理響應模型

  HTTP協議規定,請求從客戶端發出,最後服務端響應應該請求並返回。

  請求報文:由請求方法、請求URI、協議版本、可選的請求首部欄位和內容實體構成的。

  響應報文:由協議版本、狀態碼、用以解釋狀態碼的原因短語、可選的響應首部欄位以及實體主體構成。

  

  1.3 HTTP是一種無狀態協議

  HTTP協議對於傳送過的請求或響應都不做持久化處理:協議本身並不保留之前一切的請求或響應報文的資訊,這是為了更快地處理大量事務,確保協議的可伸縮性,而特意把HTTP協議設計成如此簡單的。HTTP/1.1雖然是無狀態協議,但為了實現期望的保持狀態功能,於是引入Cookie技術。有了Cookie再用HTTP協議通訊,就可以管理狀態了。

  Cookie根據伺服器端傳送的響應報文內的一個叫做Set-Cookie的首部欄位資訊,通知客戶端儲存Cookie。當下次客戶端再往該伺服器傳送請求時,客戶端自動在請求報文中加入Cookie值後傳送出去。服務端發現客戶端傳送過來的Cookie後,會去檢查究竟是從哪一個客戶端發來的連線請求,然後對比伺服器上的記錄,最後得到之前的狀態資訊。

  1.4 告知伺服器意圖的HTTP方法

  (1)GET:獲取資源

  (2)POST:傳輸實體主體 → POST的主要目的並不是獲取響應的主體內容

  (3)PUT:傳輸檔案 → 就像FTP協議的檔案上傳一樣,要求在請求報文的主體中包含檔案內容,然後儲存到請求URI指定的位置

但是,鑑於HTTP/1.1的PUT方法自身不帶驗證機制,任何人都可以上傳檔案,所以存在安全性問題,因此一般的Web網站不使用該方法

  (4)HEAD:獲得報文首部 → HEAD與GET一樣,只是不返回報文主體部分,用於確認URI的有效性及資源更新的日期時間等等。

  (5)DELETE:刪除檔案 → DELETE與PUT相反,DELETE按請求URI刪除指定資源。

但是,HTTP/1.1的DELETE方法本身與PUT方法一樣不帶驗證機制,所以一般的Web網站也不使用DELETE方法。  

  (6)OPTIONS:詢問支援的方法 → 查詢針對請求URI指定的資源所支援的方法(例如該資源支援GET、POST、PUT等)。

  (7)TRACE:追蹤路徑 → 讓Web伺服器端將之前的請求通訊環回給客戶端的方法。(不常用,容易引發XST攻擊)

  (8)CONNECT:要求用隧道協議連線代理 → 要求在與代理伺服器通訊時建立隧道,實現用隧道協議進行TCP通訊。主要使用SSL和TLS協議把通訊內容加密後經過網路隧道傳輸。

CONNECT方法的格式:CONNECT 代理伺服器名:埠號 HTTP版本

  1.5 持久連線

  在HTTP協議的初始版本中,每進行一次HTTP通訊就要斷開一次TCP連線。因此,每次的請求都會造成無謂的TCP連線建立與斷開,增加通訊量的開銷。為了解決這個問題,HTTP/1.1想出了持久連線(也稱為HTTP keep-alive),其特點是:只要任意一端沒有明確提出斷開連線,則保持TCP連線狀態。

持久連線的好處在於減少了TCP連線的重複建立和斷開所造成的額外開銷,減輕了伺服器的負載,也使得HTTP請求和響應能夠更早地結束,這樣Web頁面的顯示速度也就相應的提高了。在HTTP/1.1中,所有的連線預設都是持久連線。  

二、HTTP報文詳解

  用於HTTP協議互動的資訊就被稱為HTTP報文,請求段的叫做請求報文,響應端的叫做響應報文。HTTP報文字身是由多行(用CR+LF作換行符)資料構成的字串文字。

  2.1 HTTP報文結構

  (1)HTTP報文大致可以分為報文首部和報文主體兩塊

  (2)請求報文和響應報文的結構例項

  2.2 部分內容的範圍請求

  通常下載一個大檔案時如果遇到網路中斷的情況,那就必須重頭開始,因此為了解決上述問題,就需要一種可恢復的機制。所謂恢復就是指從之前下載的中斷處恢復下載。要實現該功能需要制定下載的實體範圍,這就叫範圍請求(Range Request)。

  對一份10000位元組大小的資源,如果使用範圍請求,可以只請求5001~10000位元組內的資源。執行範圍請求時,就會用到Range來指定資源的byte範圍。

  2.3 內容協商機制

  內容協商機制就是指在客戶端和服務端就響應的資源內容進行交涉,然後提供給客戶端最為合適的資源。內容協商會議響應資源的語言、字符集、編碼方式等作為判斷的基準。

So,有哪些判斷的基準呢?

Accept

Accept-Charset

Accept-Encoding

Accept-Language

Content-Language

  2.4 HTTP狀態碼

  HTTP狀態碼負責表示客戶端HTTP請求的返回結果、標記伺服器端的處理是否正常、通知出現的錯誤等工作。藉助狀態碼,使用者可以知道伺服器端是正常處理了請求,還是出現了錯誤。

  (1)2XX 成功 → 表明請求被正常處理了,如200 OK,204 No Content,206 Partial Content

  (2)3XX 重定向 → 表明瀏覽器需要執行某些特殊的處理以正確處理請求。如301 Moved Permanently(永久移動),302 Found(臨時移動),303 See Other(資源的URI已更新,是否能臨時按新的URI訪問)、304 Not Modified(資源已找到,但未符合條件請求)、307 Temporary Redirect(臨時重定向)

  (3)4XX 客戶端錯誤 → 表明客戶端是發生錯誤的原因所在。如400 Bad Request(請求報文中存在語法錯誤),401 Unauthorized(認證失敗或未認證)、403 Forbidden(不允許訪問這個資源)、404 Not Found(伺服器上沒有請求的資源)。

  (4)5XX 伺服器錯誤 → 表明伺服器本身發生錯誤。如500 Internal Server Error(伺服器端在執行請求時發生了錯誤,也可能是Web應用存在的Bug或某些臨時的故障),503 Service Unavailable(表明伺服器暫時處於超負載或正在停機維護,無法處理請求)。

  2.5 HTTP首部

   HTTP/1.1規範定義瞭如下47種首部欄位:

  (1)通用首部欄位

  (2)請求首部欄位 

  (3)響應首部欄位

  (4)實體首部欄位

三、確保Web安全

  3.1 HTTPS

  在HTTP協議中有可能存在資訊竊聽或者身份偽裝等安全問題,即使已經過加密處理的通訊,也會被窺視到通訊內容。例如:使用一些抓包軟體如Packet Capture或Sniffer就可以抓取相同段上的通訊。使用HTTPS(HTTP Secure)通訊機制就可以有效地防止這些問題。

HTTP + 加密 + 認證 + 完整性保護 = HTTPS

  HTTPS並非是應用層的一種新協議,只是HTTP通訊介面部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)協議代替而已。通常情況下,HTTP直接和TCP通訊,當使用SSL時,則演變成先和SSL通訊,再由SSL和TCP通訊了。簡而言之,所謂HTTPS,其實就是身披SSL協議這層外殼的HTTP

  SSL是獨立於HTTP的協議,所以不光是HTTP協議,其他執行在應用層的SMTP和Telnet等協議均可配合SSL協議使用。可以說,SSL是當今世界上應用最為廣泛的網路安全技術。在採用了SSL之後,HTTP就擁有了HTTPS的加密、證書和完整性保護這些功能。

  既然HTTPS安全可靠,那為何所有的Web網站不一直使用HTTPS?

一是因為與純文字通訊相比,加密通訊會消耗更多的CPU以及記憶體資源。如果每次通訊都加密,會消耗相當多的資源,平攤到一臺計算機上時,能夠處理的請求數量必定會隨之減少。

二是購買證書的開銷也很大,要進行HTTPS通訊,證書是必不可少的,而使用的證書必須要向認證機構(CA)購買。通常,一年的授權費用需要600人民幣左右。  

所以,如果是非敏感資訊一般都使用HTTP通訊,只有在包含個人資訊等敏感資料時,才會使用HTTPS加密通訊

  3.2 確認訪問使用者身份的認證

  某些Web頁面只想讓特定的人瀏覽,或者乾脆本人可見。未達到這個目標,必不可少的就是認證功能。

  HTTP/1.1使用的認證方式如下:

  (1)BASIC認證(基本認證) → 不夠靈活,達不到多數Web網站期望的安全性等級(直接傳送明文密碼BASE64編碼),因此它並不常用。

  (2)DIGEST認證(摘要認證) → 採用質詢響應方式,相比BASIC認證,密碼洩露的可能性就降低了。

  (3)SSL客戶端認證 → 藉助HTTPS的客戶端證書完成認證,憑藉客戶端證書認證,伺服器可確認訪問是否來自已登入的客戶端。

  (4)FormBase認證(基於表單認證)

通常情況下,一種安全的儲存方法是:先利用密碼加鹽(Salt)的方式增加額外資訊,再使用雜湊(Hash)函式計算出雜湊值後儲存。

四、Web的攻擊技術

  4.1 針對Web應用的攻擊模式

  (1)主動攻擊:攻擊者通過直接訪問Web應用,把攻擊程式碼傳入的攻擊模式。最具典型的攻擊就是 SQL注入攻擊和OS命令注入攻擊。

  (2)被動攻擊:利用圈套策略執行攻擊程式碼地攻擊模式,在被動攻擊過程中,攻擊者不直接對目標Web應用訪問發起攻擊。

  4.2 跨站指令碼攻擊(XSS)

  跨站指令碼攻擊(Cross-Site Scripting,XSS)是指通過存在安全漏洞的Web網站註冊使用者的瀏覽器內執行非法的HTML標籤或者JavaScript指令碼進行攻擊的一種攻擊。

  跨站指令碼攻擊可以造成以下影響:

  (1)利用虛假輸入表單騙取使用者個人資訊。

  (2)利用指令碼竊取使用者的Cookie值,被害者在不知情的情況下,幫助攻擊者傳送惡意請求。

  (3)顯示偽造的文章或者圖片。

  4.3 SQL注入攻擊

   SQL注入(SQL Injection)是指標對Web應用使用的資料庫,通過執行非法的SQL而產生的攻擊。該安全隱患有可能引起極大地威脅,有時會直接導致個人資訊及機密資訊的洩露。

  SQL注入攻擊有可能造成以下影響:

  (1)非法檢視或篡改資料庫內的資料。

  (2)規避認證。

  (3)執行和資料庫伺服器業務關聯的程式等。

  4.4 OS命令注入攻擊

  OS命令注入攻擊是指通過Web應用,執行非法的作業系統命令達到攻擊的目的。只要在能呼叫Shell函式的地方就有存在被攻擊的風險。

  4.5 HTTP首部注入攻擊

  HTTP首部注入攻擊是指攻擊者通過在響應首部欄位內插入換行,新增任意響應首部或主題的一種攻擊。屬於被動攻擊模式。

  4.6 因會話管理疏忽引發的安全漏洞

  (1)會話劫持:攻擊者通過某種手段拿到了使用者的會話ID,並非法使用此會話ID偽裝成使用者,達到攻擊的目的。

  (2)會話固定攻擊:強制使用者使用攻擊者指定的會話ID,屬於被動攻擊。

  (3)跨站點請求偽造Cross-Site Request Forgeries,CSRF):攻擊者通過設定好的陷阱,強制對已完成認證的使用者進行非預期的個人資訊或設定資訊等某些狀態更新,屬於被動攻擊。

  CSRF有可能造成以下影響:

1、利用已通過認證的使用者許可權更新設定資訊等;

2、利用已通過認證的使用者許可權購買商品;

3、利用已通過認證的使用者許可權在留言板上發表言論等;

  4.7 DoS攻擊

  DoS攻擊(Denial of Service attack)是一種讓執行中的服務呈停止狀態的攻擊。有時也叫作服務停止或拒絕服務攻擊。主要有以下兩種DoS攻擊方式:

  (1)集中利用訪問請求造成資源過載,資源用盡的同時,實際上也就呈停止狀態。

  單純來講,就是傳送大量的合法請求,伺服器很難分辨何為正常請求,何為攻擊請求,因此很難防止DoS攻擊。多臺計算機發起的DoS攻擊成為DDoS攻擊(Distributed Denial of Service attack),DDoS攻擊通常利用那些感染病毒的計算機作為攻擊者的攻擊跳板。

  (2)通過攻擊安全漏洞使服務停止。

 

   

  目前國內講解HTTP協議的書是在太少了,記憶中有兩本被譽為經典的書《HTTP權威指南》與《TCP/IP詳解,卷1》,但內容晦澀難懂,學習難度較大。其實,HTTP協議並不複雜,理解起來也不會花費太多學習成本,這本書的出現就及時緩解了該問題。對基礎及核心部分的深入學習是成為一名專業技術人員的前提,以不變應萬變才是立足之本。此外,這本書也是我的2016年度讀書計劃中的一本,它和《圖解TCP/IP》一起作為計算機網路基礎部分為我溫故知新了一把,謝謝作者和譯者,畫了這麼多圖解讓我們理解。

一、HTTP協議初探

  1.1 各種協議與HTTP協議的關係

  1.2 請求處理響應模型

  HTTP協議規定,請求從客戶端發出,最後服務端響應應該請求並返回。

  請求報文:由請求方法、請求URI、協議版本、可選的請求首部欄位和內容實體構成的。

  響應報文:由協議版本、狀態碼、用以解釋狀態碼的原因短語、可選的響應首部欄位以及實體主體構成。

  

  1.3 HTTP是一種無狀態協議

  HTTP協議對於傳送過的請求或響應都不做持久化處理:協議本身並不保留之前一切的請求或響應報文的資訊,這是為了更快地處理大量事務,確保協議的可伸縮性,而特意把HTTP協議設計成如此簡單的。HTTP/1.1雖然是無狀態協議,但為了實現期望的保持狀態功能,於是引入Cookie技術。有了Cookie再用HTTP協議通訊,就可以管理狀態了。

  Cookie根據伺服器端傳送的響應報文內的一個叫做Set-Cookie的首部欄位資訊,通知客戶端儲存Cookie。當下次客戶端再往該伺服器傳送請求時,客戶端自動在請求報文中加入Cookie值後傳送出去。服務端發現客戶端傳送過來的Cookie後,會去檢查究竟是從哪一個客戶端發來的連線請求,然後對比伺服器上的記錄,最後得到之前的狀態資訊。

  1.4 告知伺服器意圖的HTTP方法

  (1)GET:獲取資源

  (2)POST:傳輸實體主體 → POST的主要目的並不是獲取響應的主體內容

  (3)PUT:傳輸檔案 → 就像FTP協議的檔案上傳一樣,要求在請求報文的主體中包含檔案內容,然後儲存到請求URI指定的位置

但是,鑑於HTTP/1.1的PUT方法自身不帶驗證機制,任何人都可以上傳檔案,所以存在安全性問題,因此一般的Web網站不使用該方法

  (4)HEAD:獲得報文首部 → HEAD與GET一樣,只是不返回報文主體部分,用於確認URI的有效性及資源更新的日期時間等等。

  (5)DELETE:刪除檔案 → DELETE與PUT相反,DELETE按請求URI刪除指定資源。

但是,HTTP/1.1的DELETE方法本身與PUT方法一樣不帶驗證機制,所以一般的Web網站也不使用DELETE方法。  

  (6)OPTIONS:詢問支援的方法 → 查詢針對請求URI指定的資源所支援的方法(例如該資源支援GET、POST、PUT等)。

  (7)TRACE:追蹤路徑 → 讓Web伺服器端將之前的請求通訊環回給客戶端的方法。(不常用,容易引發XST攻擊)

  (8)CONNECT:要求用隧道協議連線代理 → 要求在與代理伺服器通訊時建立隧道,實現用隧道協議進行TCP通訊。主要使用SSL和TLS協議把通訊內容加密後經過網路隧道傳輸。

CONNECT方法的格式:CONNECT 代理伺服器名:埠號 HTTP版本

  1.5 持久連線

  在HTTP協議的初始版本中,每進行一次HTTP通訊就要斷開一次TCP連線。因此,每次的請求都會造成無謂的TCP連線建立與斷開,增加通訊量的開銷。為了解決這個問題,HTTP/1.1想出了持久連線(也稱為HTTP keep-alive),其特點是:只要任意一端沒有明確提出斷開連線,則保持TCP連線狀態。

持久連線的好處在於減少了TCP連線的重複建立和斷開所造成的額外開銷,減輕了伺服器的負載,也使得HTTP請求和響應能夠更早地結束,這樣Web頁面的顯示速度也就相應的提高了。在HTTP/1.1中,所有的連線預設都是持久連線。  

二、HTTP報文詳解

  用於HTTP協議互動的資訊就被稱為HTTP報文,請求段的叫做請求報文,響應端的叫做響應報文。HTTP報文字身是由多行(用CR+LF作換行符)資料構成的字串文字。

  2.1 HTTP報文結構

  (1)HTTP報文大致可以分為報文首部和報文主體兩塊

  (2)請求報文和響應報文的結構例項

  2.2 部分內容的範圍請求

  通常下載一個大檔案時如果遇到網路中斷的情況,那就必須重頭開始,因此為了解決上述問題,就需要一種可恢復的機制。所謂恢復就是指從之前下載的中斷處恢復下載。要實現該功能需要制定下載的實體範圍,這就叫範圍請求(Range Request)。

  對一份10000位元組大小的資源,如果使用範圍請求,可以只請求5001~10000位元組內的資源。執行範圍請求時,就會用到Range來指定資源的byte範圍。

  2.3 內容協商機制

  內容協商機制就是指在客戶端和服務端就響應的資源內容進行交涉,然後提供給客戶端最為合適的資源。內容協商會議響應資源的語言、字符集、編碼方式等作為判斷的基準。

So,有哪些判斷的基準呢?

Accept

Accept-Charset

Accept-Encoding

Accept-Language

Content-Language

  2.4 HTTP狀態碼

  HTTP狀態碼負責表示客戶端HTTP請求的返回結果、標記伺服器端的處理是否正常、通知出現的錯誤等工作。藉助狀態碼,使用者可以知道伺服器端是正常處理了請求,還是出現了錯誤。

  (1)2XX 成功 → 表明請求被正常處理了,如200 OK,204 No Content,206 Partial Content

  (2)3XX 重定向 → 表明瀏覽器需要執行某些特殊的處理以正確處理請求。如301 Moved Permanently(永久移動),302 Found(臨時移動),303 See Other(資源的URI已更新,是否能臨時按新的URI訪問)、304 Not Modified(資源已找到,但未符合條件請求)、307 Temporary Redirect(臨時重定向)

  (3)4XX 客戶端錯誤 → 表明客戶端是發生錯誤的原因所在。如400 Bad Request(請求報文中存在語法錯誤),401 Unauthorized(認證失敗或未認證)、403 Forbidden(不允許訪問這個資源)、404 Not Found(伺服器上沒有請求的資源)。

  (4)5XX 伺服器錯誤 → 表明伺服器本身發生錯誤。如500 Internal Server Error(伺服器端在執行請求時發生了錯誤,也可能是Web應用存在的Bug或某些臨時的故障),503 Service Unavailable(表明伺服器暫時處於超負載或正在停機維護,無法處理請求)。

  2.5 HTTP首部

   HTTP/1.1規範定義瞭如下47種首部欄位:

  (1)通用首部欄位

  (2)請求首部欄位 

  (3)響應首部欄位

  (4)實體首部欄位

三、確保Web安全

  3.1 HTTPS

  在HTTP協議中有可能存在資訊竊聽或者身份偽裝等安全問題,即使已經過加密處理的通訊,也會被窺視到通訊內容。例如:使用一些抓包軟體如Packet Capture或Sniffer就可以抓取相同段上的通訊。使用HTTPS(HTTP Secure)通訊機制就可以有效地防止這些問題。

HTTP + 加密 + 認證 + 完整性保護 = HTTPS

  HTTPS並非是應用層的一種新協議,只是HTTP通訊介面部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)協議代替而已。通常情況下,HTTP直接和TCP通訊,當使用SSL時,則演變成先和SSL通訊,再由SSL和TCP通訊了。簡而言之,所謂HTTPS,其實就是身披SSL協議這層外殼的HTTP

  SSL是獨立於HTTP的協議,所以不光是HTTP協議,其他執行在應用層的SMTP和Telnet等協議均可配合SSL協議使用。可以說,SSL是當今世界上應用最為廣泛的網路安全技術。在採用了SSL之後,HTTP就擁有了HTTPS的加密、證書和完整性保護這些功能。

  既然HTTPS安全可靠,那為何所有的Web網站不一直使用HTTPS?

一是因為與純文字通訊相比,加密通訊會消耗更多的CPU以及記憶體資源。如果每次通訊都加密,會消耗相當多的資源,平攤到一臺計算機上時,能夠處理的請求數量必定會隨之減少。

二是購買證書的開銷也很大,要進行HTTPS通訊,證書是必不可少的,而使用的證書必須要向認證機構(CA)購買。通常,一年的授權費用需要600人民幣左右。  

所以,如果是非敏感資訊一般都使用HTTP通訊,只有在包含個人資訊等敏感資料時,才會使用HTTPS加密通訊

  3.2 確認訪問使用者身份的認證

  某些Web頁面只想讓特定的人瀏覽,或者乾脆本人可見。未達到這個目標,必不可少的就是認證功能。

  HTTP/1.1使用的認證方式如下:

  (1)BASIC認證(基本認證) → 不夠靈活,達不到多數Web網站期望的安全性等級(直接傳送明文密碼BASE64編碼),因此它並不常用。

  (2)DIGEST認證(摘要認證) → 採用質詢響應方式,相比BASIC認證,密碼洩露的可能性就降低了。

  (3)SSL客戶端認證 → 藉助HTTPS的客戶端證書完成認證,憑藉客戶端證書認證,伺服器可確認訪問是否來自已登入的客戶端。

  (4)FormBase認證(基於表單認證)

通常情況下,一種安全的儲存方法是:先利用密碼加鹽(Salt)的方式增加額外資訊,再使用雜湊(Hash)函式計算出雜湊值後儲存。

四、Web的攻擊技術

  4.1 針對Web應用的攻擊模式

  (1)主動攻擊:攻擊者通過直接訪問Web應用,把攻擊程式碼傳入的攻擊模式。最具典型的攻擊就是 SQL注入攻擊和OS命令注入攻擊。

  (2)被動攻擊:利用圈套策略執行攻擊程式碼地攻擊模式,在被動攻擊過程中,攻擊者不直接對目標Web應用訪問發起攻擊。

  4.2 跨站指令碼攻擊(XSS)

  跨站指令碼攻擊(Cross-Site Scripting,XSS)是指通過存在安全漏洞的Web網站註冊使用者的瀏覽器內執行非法的HTML標籤或者JavaScript指令碼進行攻擊的一種攻擊。

  跨站指令碼攻擊可以造成以下影響:

  (1)利用虛假輸入表單騙取使用者個人資訊。

  (2)利用指令碼竊取使用者的Cookie值,被害者在不知情的情況下,幫助攻擊者傳送惡意請求。

  (3)顯示偽造的文章或者圖片。

  4.3 SQL注入攻擊

   SQL注入(SQL Injection)是指標對Web應用使用的資料庫,通過執行非法的SQL而產生的攻擊。該安全隱患有可能引起極大地威脅,有時會直接導致個人資訊及機密資訊的洩露。

  SQL注入攻擊有可能造成以下影響:

  (1)非法檢視或篡改資料庫內的資料。

  (2)規避認證。

  (3)執行和資料庫伺服器業務關聯的程式等。

  4.4 OS命令注入攻擊

  OS命令注入攻擊是指通過Web應用,執行非法的作業系統命令達到攻擊的目的。只要在能呼叫Shell函式的地方就有存在被攻擊的風險。

  4.5 HTTP首部注入攻擊

  HTTP首部注入攻擊是指攻擊者通過在響應首部欄位內插入換行,新增任意響應首部或主題的一種攻擊。屬於被動攻擊模式。

  4.6 因會話管理疏忽引發的安全漏洞

  (1)會話劫持:攻擊者通過某種手段拿到了使用者的會話ID,並非法使用此會話ID偽裝成使用者,達到攻擊的目的。

  (2)會話固定攻擊:強制使用者使用攻擊者指定的會話ID,屬於被動攻擊。

  (3)跨站點請求偽造Cross-Site Request Forgeries,CSRF):攻擊者通過設定好的陷阱,強制對已完成認證的使用者進行非預期的個人資訊或設定資訊等某些狀態更新,屬於被動攻擊。

  CSRF有可能造成以下影響:

1、利用已通過認證的使用者許可權更新設定資訊等;

2、利用已通過認證的使用者許可權購買商品;

3、利用已通過認證的使用者許可權在留言板上發表言論等;

  4.7 DoS攻擊

  DoS攻擊(Denial of Service attack)是一種讓執行中的服務呈停止狀態的攻擊。有時也叫作服務停止或拒絕服務攻擊。主要有以下兩種DoS攻擊方式:

  (1)集中利用訪問請求造成資源過載,資源用盡的同時,實際上也就呈停止狀態。

  單純來講,就是傳送大量的合法請求,伺服器很難分辨何為正常請求,何為攻擊請求,因此很難防止DoS攻擊。多臺計算機發起的DoS攻擊成為DDoS攻擊(Distributed Denial of Service attack),DDoS攻擊通常利用那些感染病毒的計算機作為攻擊者的攻擊跳板。

  (2)通過攻擊安全漏洞使服務停止。