在進行任何Web資安測試前,必須先理解瀏覽器與伺服器之間的溝通語言那就是HTTP。所有的Web漏洞攻擊,本質上都是利用或篡改HTTP封包中的資料。
1.請求行:包含HTTP方法(GET、POST 等)、請求路徑(URL)與協定版本。
2.請求標頭(Request Headers):攜帶客戶端資訊,如 User-Agent(瀏覽器類型)、Cookie(身份憑證)、Content-Type(資料格式)。
3.請求主體(Request Body):通常在 POST 或 PUT 請求中出現,用來傳送表單資料或 JSON 內容。
POST /login.php HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
username=admin&password=123456
2.POST(提交資料):資料放在Request Body,隱蔽性較 GET 高,但傳輸時仍需加密 (HTTPS)
3.PUT / DELETE(修改/刪除資源):若API未做嚴謹的權限控管,攻擊者可未授權刪除或替換伺服器檔案
200 OK:請求成功。
301 / 302 Redirect:重新導向(若導向網址未驗證,可能導致 Open Redirect 漏洞)。
401 / 403 Forbidden:未授權或權限不足(認證與授權機制失效的關鍵關注點)。
500 Internal Server Error:伺服器內部錯誤(資安測試重點:過於詳細的 500 報錯訊息容易洩漏資料庫類型或程式碼路徑)。
4.Cookie與Session:狀態維護的雙面刃
HTTP本身是無狀態協定,為了讓網站記住登入狀態,必須依賴Cookie與Session:
Session:儲存於伺服器端,記錄使用者的登入資訊與狀態。
Cookie:儲存於客戶端瀏覽器,每次發送Request時都會自動帶上Session ID給伺服器比對。
風險點:若Cookie未設定HttpOnly標籤,惡意腳本(XSS 攻擊)就能直接讀取並竊取使用者的Session ID,導致帳號被盜用。