昨天打開瀏覽器的 Network,看到了 Request,也看到了 Response。
這時候旁邊常常會出現一串數字。
200
301
403
404
500
以前我只認識 404。
因為 404 常常出現在網頁找不到的時候。
但後來才發現,這些數字其實是伺服器回話時的「語氣」。
它不是隨便挑一個數字放上去。
它是在告訴瀏覽器:
你剛剛的請求,我處理得怎麼樣了。
200 OK 大概就是最和平的狀態。
你要資料,伺服器找到了,也願意給你。
打開一般網頁、載入圖片、抓 CSS、讀 JavaScript,很多正常請求都會看到 200。
它像是:
有,這是你要的東西。
301 和 302 都跟重新導向有關。
差別先不用背太細。
可以先想成:
你找的地方不在這裡,請去另一個位置。
有時候這很正常。
例如 HTTP 轉到 HTTPS。
或舊網址導到新網址。
但在看可疑網站時,Redirect 也值得留意。
因為釣魚連結有時候會繞好幾層,讓你一開始看不出最後會去哪。
403 Forbidden 很有個性。
伺服器知道你在請求什麼,但它拒絕。
可能是權限不足。
可能是 IP 被限制。
可能是目錄不允許瀏覽。
它不像 404 那樣說「找不到」。
比較像警衛看了你一眼說:
你不能進。
404 Not Found 是大家最熟的。
意思是伺服器找不到你要的資源。
可能是網址打錯。
可能是文章被刪。
也可能是網站故意對不存在或不想曝光的路徑都回 404。
所以看到 404 不一定有資安事件。
它通常只是線索。
500 Internal Server Error 則比較像伺服器裡面發生問題。
程式錯誤、後端服務掛掉、設定出錯,都可能造成 500。
如果一個網站平常好好的,突然某些請求一直 500,對開發者和維運來說就值得查。
但對使用者來說,也不要看到 500 就覺得自己被駭。
它更多時候是網站自己摔倒。
狀態碼不能單獨證明攻擊。
但它可以幫我們理解一個請求發生了什麼。
例如:
一直 401 / 403
可能是在碰需要權限的地方。
大量 404
可能有人在猜路徑,例如找 /admin、/backup.zip、/.env。
突然很多 500
可能是程式真的壞了,也可能是某些奇怪輸入觸發錯誤。
真正重要的不是背完所有狀態碼。
而是看到它時,能多問一句:
這個回應,代表剛剛那個請求發生了什麼事?
到這裡,HTTP 這條線就比較完整了。
瀏覽器送出 Request。
伺服器回 Response。
Response 裡有狀態碼,告訴我們結果。