- 安全測試教程
- 安全測試 - 首頁
- 安全測試 - 概述
- 安全測試 - 流程
- 安全測試 - 惡意軟體
- HTTP 協議基礎
- HTTPS 協議基礎
- 編碼和解碼
- 安全測試 - 密碼學
- 安全測試 - 同源策略
- 安全測試 - Cookie
- 駭客攻擊 Web 應用程式
- 安全測試 - 注入
- 測試身份驗證漏洞
- 測試跨站指令碼攻擊
- 不安全的直接物件引用
- 測試安全配置錯誤
- 測試敏感資料洩露
- 缺少函式級訪問控制
- 跨站請求偽造
- 存在漏洞的元件
- 未經驗證的重定向和轉發
- 安全測試 - Ajax 安全
- 測試安全 - Web 服務
- 安全測試 - 緩衝區溢位
- 安全測試 - 拒絕服務
- 測試惡意檔案執行
- 安全測試 - 自動化工具
- 安全測試有用資源
- 安全測試 - 快速指南
- 安全測試 - 有用資源
- 安全測試 - 討論
安全測試 - HTTP 請求
HTTP 請求
HTTP 客戶端以請求訊息的形式向伺服器傳送 HTTP 請求,該請求訊息包含以下格式:
請求行
零個或多個報頭(通用|請求|實體)欄位,後跟 CRLF
空行(在 CRLF 之前沒有任何內容的行),表示報頭欄位的結束
可選的訊息體
以下部分解釋了 HTTP 訊息中使用的每個實體。
訊息請求行
請求行以方法標記開頭,後跟請求 URI、協議版本,並以 CRLF 結尾。這些元素由空格 SP 字元分隔。
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
讓我們討論請求行中提到的每個部分。
請求方法
請求方法指示對由給定請求 URI標識的資源執行的操作。方法區分大小寫,應始終以大寫形式提及。HTTP/1.1 支援以下方法:
| 序號 | 方法和描述 |
|---|---|
| 1 | GET 用於使用給定的 URI 從給定的伺服器檢索資訊。使用 GET 的請求應該只檢索資料,並且不應對資料產生任何其他影響。 |
| 2 | HEAD 與 GET 相同,但僅傳輸狀態行和報頭部分。 |
| 3 | POST 用於將資料傳送到伺服器。例如,使用 HTML 表單傳送客戶資訊、檔案上傳等。 |
| 4 | PUT 用上傳的內容替換目標資源的所有當前表示形式。 |
| 5 | DELETE 刪除 URI 給定的目標資源的所有當前表示形式。 |
| 6 | CONNECT 建立到由給定 URI 標識的伺服器的隧道。 |
| 7 | OPTIONS 描述目標資源的通訊選項。 |
| 8 | TRACE 沿目標資源路徑執行訊息環回測試。 |
請求 URI
請求 URI 是一個統一資源識別符號,用於標識必須對其應用請求的資源。以下是指定 URI 最常用的形式:
Request-URI = "*" | absoluteURI | abs_path | authority
| 序號 | 方法和描述 |
|---|---|
| 1 | 當 HTTP 請求不應用於特定資源,而是應用於伺服器本身時,使用星號*。僅當方法不一定應用於資源時才允許。例如,OPTIONS * HTTP/1.1 |
| 2 | 當向代理伺服器發出 HTTP 請求時,使用absoluteURI。請求代理伺服器轉發請求或從有效的快取中為其提供服務,並返回響應。例如,GET https://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
| 3 | 請求 URI 最常見的形式是用於標識源伺服器或閘道器上的資源的形式。例如,客戶端希望直接從源伺服器檢索上述資源,將建立到主機“www.w3.org”的埠 80 的 TCP 連線,併發送以下行: GET /pub/WWW/TheProject.html HTTP/1.1 Host: https://www.w3.org/ 注意 - 絕對路徑不能為空。如果原始 URI 中不存在,則必須將其指定為 "/"(伺服器根目錄) |
請求報頭欄位
請求報頭欄位允許客戶端將有關請求以及客戶端本身的附加資訊傳遞給伺服器。這些欄位充當請求修改器,並且可以使用以下重要的請求報頭欄位,具體取決於需求:
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Authorization
- Expect
- From
- Host
- If-Match
- If-Modified-Since
- If-None-Match
- If-Range
- If-Unmodified-Since
- Max-Forwards
- Proxy-Authorization
- Range
- Referer
- TE
- User-Agent
如果您要編寫自己的自定義客戶端和 Web 伺服器,則可以引入自定義欄位。
請求訊息示例
現在讓我們將所有內容組合在一起,形成一個 HTTP 請求,以從執行在 tutorialspoint.com 上的 Web 伺服器中獲取hello.htm頁面:
GET /hello.htm HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive
這裡我們沒有向伺服器傳送任何請求資料,因為我們正在從伺服器獲取一個普通的 HTML 頁面。Connection 是一個通用報頭,其餘所有報頭都是請求報頭。以下是另一個示例,其中我們使用請求訊息體向伺服器傳送表單資料:
POST /cgi-bin/process.cgi HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Content-Type: application/x-www-form-urlencoded Content-Length: length Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive licenseID = string&content = string&/paramsXML = string
這裡,給定的 URL /cgi-bin/process.cgi 用於處理傳遞的資料,並據此返回響應。content-type 告訴伺服器傳遞的資料是簡單的 Web 表單資料,length 是放入訊息體的資料的實際長度。以下示例顯示瞭如何將普通 XML 傳遞給您的 Web 伺服器:
POST /cgi-bin/process.cgi HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: www.tutorialspoint.com Content-Type: text/xml; charset = utf-8 Content-Length: length Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: Keep-Alive <?xml version = "1.0" encoding = "utf-8"?> <string xmlns = "http://clearforest.com/">string</string>