先縮小不必要的公開面
網站伺服器的工作是交付應公開的內容。原始碼、備份、環境設定與管理工具若混進公開目錄,會擴大資料暴露。先定義部署產物清單,再檢查實際輸出,比只依賴檔名猜測更可靠。
更新與最小權限處理另一層問題:程式版本是否受支援、服務帳號是否只擁有必要檔案權限、管理介面是否有獨立存取控制。正常首頁顯示不能代替這些檢查。
標頭提供瀏覽器控制,不修補所有漏洞
Content-Security-Policy 可限制瀏覽器載入的內容來源;X-Content-Type-Options: nosniff 限制型態猜測;frame-ancestors 控制誰可嵌入頁面。需要檢查實際回應與頁面功能,避免只加上設定卻沒有生效。
標頭不能替代應用授權、輸入處理或資料庫參數化。強的設定也可能擋掉合法功能,因此部署前後都應驗證文章、圖片、腳本與錯誤頁的必要行為。
例子:公開目錄多了一份備份
合成部署清單包含 index.html、app.css、photo.webp 與 database-backup.sql。只前三項在公開內容清單。
即使首頁回應帶有安全標頭,備份檔仍不應被發布。要從部署產物排除它,核對遠端不可取得,並依是否曾暴露評估後續處理。
判斷:公開產物驗證與安全標頭檢查是兩個必要但不同的項目。
離線練習:檢查發布清單
使用本文四個虛構檔名,不讀取真實備份或秘密。
- 將每個檔案對照公開內容清單。
- 寫出發布前阻擋條件與發布後檢查。
- 補上正常頁面與不存在頁面的預期 HTTP 狀態。
預期結果
備份檔必須排除;正常公開頁預期 200,不存在頁預期 404。
自行檢核
如果所有不存在的路徑都回傳 200 首頁,會如何影響錯誤辨識?
結束與清理
保存合成檢查清單即可。