昨天,我們學了HTTP,今天我們要來學HTTP狀態碼,因為它能夠幫助判斷許多漏洞測試與攻擊,也包括了我們之前學XSS,同時也能夠幫助我們快速掌握伺服器的狀態。
HTTP狀態碼,英文為HTTP Status Code,是伺服器對用戶端請求的回應代碼。它能夠告訴我們送出的請求成功或失敗又或是需要其他操作。
HTTP狀態碼分為五大類,通常類別會由第一位數字來決定
1.1XX-資訊回應(Imformation)
表示請求已被接收,伺服器仍在處理中。
常見的代碼:
100 Continue: 請求的第一部分沒有問題,客戶端可以繼續傳送
101 Switching Protocols: 伺服器同意切換協議(常見於WebSocket)
2.2XX-成功(Success)
表示請求已成功被伺服器處理
常見的代碼:
200 OK: 最常見,請求成功並有回應內容
201 Created: 已建立新的資源(例如:新增帳號)
204 No Content: 請求成功但沒有回應內容(例如刪除操作)
3.3XX-重定向(Redirection)
表示客戶端需要進一步操作才能完成請求
常見的代碼:
301 Moved Permanently: 資源已永久搬移
302 Found: 暫時轉址
304 Not Modified: 資源沒有變更,瀏覽器可用快取
4.4XX-用戶端錯誤 (Client Error)
表示請求有誤,多半是用戶端問題
常見的代碼:
400 Bad Request: 請求格式錯誤
401 Unauthorized: 需要驗證(常見於需要登入)
403 Forbidden: 伺服器拒絕存取(權限不足)
404 Not Found: 資源不存在
405 Method Not Allowed: 使用了錯誤的HTTP方法(例如用 GET 呼叫需要 POST 的 API)
5.5XX-伺服器錯誤(Server Error)
表示請求正確,但伺服器端處理時發生錯誤
常見的代碼:
500 Internal Server Error:伺服器發生未預期錯誤
502 Bad Gateway:上游伺服器回傳錯誤
503 Service Unavailable:伺服器超載或維護中
接下來我們來講解一下狀態碼與網路安全的關係,通常HTTP狀態碼會提示一些網路安全的問題(例如對方可能採用什麼手段進行公擊),以下是一些常見的關係列表。
401/403:常見於登入繞過或權限提升測試
404:資訊收集時可觀察資源是否存在
500:系列:特別重要,因為有時候會暴露伺服器錯誤訊息,例如 SQL 語法錯誤,這是 SQL Injection 測試的線索
302:重定向:可能被用於釣魚攻擊或驗證繞過
今日小結:
今天我們學了HTTP狀態碼算是更深入的對HTTP進行學習,也增加了我們可以判斷網路安全的方式,明天我們將會學習JWT與JSON。