目錄
第1章 瞭解Web及網絡基礎
1.1 TCP/IP簡介
TCP/IP是互聯網相關的各類協議族的總稱
TCP/IP分爲4個層
- 應用層:決定了向用戶提供應用服務時通信的活動。TCP/IP協議族內預存了各類通用的應用服務。例如FTP(文件傳輸協議)、DNS(域名系統)。HTTP協議也屬於該層
- 傳輸層:對上層應用層,提供處於網絡連接中的兩臺計算機之間的數據傳輸。有兩個協議:TCP(傳輸控制協議)、UDP(用戶數據報協議)
- 網絡層:網絡層用來處理在網絡上流動的數據包。數據包是網絡傳輸的最小數據單位。該層規定了通過怎樣的傳輸線路到達對方計算機,並把數據包傳送給對方
- 鏈路層:處理連接網絡的硬件部分。包括控制操作系統、硬件的設備驅動、網絡適配器等等可見部分。硬件上的範疇均在鏈路層的作用範圍之內
1.2 TCP/IP 通信傳輸流
發送端在層與層之間傳輸數據時,每經過一層時必定會被打上一個該層所屬的首部信息。反之,接收端在層與層傳輸數據時,每經過一層時會把對應的首部消去。這種把數據信息包裝起來的做法稱爲封裝。
1.3 URI 和 URL
URI(Uniform Resource Identifier):統一資源標識符
URL(Uniform Resource Locator):統一資源定位符
絕對 URI 的格式:
第2章 簡單的 HTTP 協議
在兩臺計算機之間使用 HTTP 協議通信時,在一條通信線路上必定有一端是客戶端,另一端則是服務器端。
2.1 請求報文
請求報文是由請求方法、請求 URI、協議版本、可選的請求首部字段和內容實體構成的。
2.2 響應報文
響應報文基本上由協議版本、狀態碼(表示請求成功或失敗的數字代碼)、用以解釋狀態碼的原因短語、可選的響應首部字段以及實體主體構成。
2.3 告知服務器意圖的 HTTP 方法
在這裏列舉的衆多方法中,LINK 和 UNLINK 已被 HTTP/1.1 廢棄,不再支持。
2.4 使用 Cookie 的狀態管理
HTTP 是無狀態協議,它不對之前發生過的請求和響應的狀態進行管理。也就是說,無法根據之前的狀態進行本次的請求處理。
保留無狀態協議這個特徵的同時又要解決類似的矛盾問題,於是引入
了 Cookie 技術。Cookie 技術通過在請求和響應報文中寫入 Cookie 信息來控制客戶端的狀態。
- 沒有 Cookie 信息狀態下的請求
- 存有 Cookie 信息狀態)的請求
第3章 HTTP 報文內的 HTTP信息
3.1 HTTP 報文
用於 HTTP 協議交互的信息被稱爲 HTTP 報文。
- 請求報文及響應報文的結構
- 請求報文和響應報文的實例
第4章 返回結果的 HTTP 狀態碼
狀態碼類別
- 200 OK 表示從客戶端發來的請求服務端被正常處理了
- 204 NO Content 表示服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。另外也不允許返回任何實體的主體。比如,返回204響應,瀏覽器顯示的頁面不發生更新。一般在只需要從客戶端往服務器發送信息,而對客戶端不需要發送新信息內容的情況下使用
- 206 Partial Content 表示客戶端進行了範圍請求,而服務器成功執行了這部分GET請求。響應報文中包含由Content-Range指定範圍的實體內容
- 301 Moved Permanently 永久重定向。表示請求的資源已被分配了新的URI,以後應使用資源現狀所指的URI,也就是Location首部字段提示的URI
- 302 Found 臨時重定向。表示請求的資源已被分配了新的URI,希望用戶(本次)能使用新的URI訪問
- 303 See Other 表示請求的資源存在着另一個URI,應使用GET方法定向獲取。303狀態碼明確表示應當用GET請求獲取資源
- 304 Not Modified 表示請求客戶端發送附帶條件的請求時,服務器允許請求訪問資源,但未滿足條件的情況。返回時,不包含任何響應的主體部分。304雖然被劃在3XX,但與重定向沒有關係
- 307 Temporary Redirect 臨時重定向。與302一樣,但不會從POST變成GET
- 400 Bad Request 表示報文中存在語法錯誤。需修改請求的內容後在再次發送請求
- 401 Unauthorized 表示發送的請求需要有通過HTTP認證的認證信息。返回含有401的響應必須包含一個適用於被請求資源的WWW-Authenticate首部用以質詢用戶信息。當瀏覽器初次接收到401響應,會彈出認證用的對話窗口
- 403 Forbidden 表示請求資源的訪問被服務器拒絕了。未獲得文件系統的訪問授權,訪問權限出現問題等可能發生403錯誤
- 404 Not Found 表示服務器無法找到請求的資源
- 500 Internal Server Error 表示服務器端在執行請求時發生錯誤
- 503 Service Unavailable 表明服務器暫時處於超負荷或正在停機維護。
第5章 與 HTTP 協作的 Web 服務器
5.1 代理
代理服務器的基本行爲就是接收客戶端發送的請求後轉發給其他服務器。代理不改變請求 URI,會直接發送給前方持有資源的目標服務器。
5.2 網關
利用網關可以由 HTTP 請求轉化爲其他協議通信。
5.3 隧道
隧道可按要求建立起一條與其他服務器的通信線路,屆時使用 SSL等加密手段進行通信。隧道的目的是確保客戶端能與服務器進行安全的通信。
第6章 HTTP 報文首部
- 通用首部字段
- 請求首部字段
- 響應首部字段
- 實體首部字段
第7章 確保 Web 安全的HTTPS
HTTP+ 加密 + 認證 + 完整性保護=HTTPS
7.1 解釋
HTTPS 並非是應用層的一種新協議。只是 HTTP 通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)協議代替而已。
通常,HTTP 直接和 TCP 通信。當使用 SSL時,則演變成先和 SSL通信,再由 SSL和 TCP 通信了。簡言之,所謂 HTTPS,其實就是身披SSL協議這層外殼的 HTTP。
7.2 HTTPS 的安全通信機制
7.3 Http和Https的各自缺點
http缺點:
- 通信使用明文(不加密),內容可能會被竊聽
- 不驗證通信方的身份,因此有可能遭遇僞裝
- 無法證明報文的完整性,所以有可能已遭篡改
https缺點:
- 其中一個原因是,因爲與純文本通信相比,加密通信會消耗更多的CPU 及內存資源。
- 要進行 HTTPS 通信,證書是必不可少的,需要一大筆花費。
第8章 確認訪問用戶身份的認證
- BASIC 認證
- DIGEST 認證
- SSL 客戶端認證
- 基於表單認證
輸入已事先登錄的用戶 ID(通常是任意字符串或郵件地址)和密碼等登錄信息後,發送給 Web 應用程序,基於認證結果來決定認證是否成功。
第9章 基於 HTTP 的功能追加協議
第10章 構建 Web 內容的技術
第11章 Web 的攻擊技術
目前,來自互聯網的攻擊大多是衝着 Web 站點來的,它們大多把Web 應用作爲攻擊目標。
11.1針對 Web 應用的攻擊模式
- 主動攻擊
主動攻擊(active attack)是指攻擊者通過直接訪問 Web 應用,把攻擊代碼傳入的攻擊模式。由於該模式是直接針對服務器上的資源進行攻擊,因此攻擊者需要能夠訪問到那些資源
- 被動攻擊
被動攻擊(passive attack)是指利用圈套策略執行攻擊代碼的攻擊模式。在被動攻擊過程中,攻擊者不直接對目標 Web 應用訪問發起攻擊。