攻擊者視角安全稽核四問
攻擊者視角安全稽核四問
概述
一套可重複套用的程式碼安全自檢規則,把零散的安全注意事項濃縮成四個問題。適用於任何「接收外部輸入 → 執行寫入/修改動作」的入口(後台 AJAX、API 端點、表單處理、Webhook、AI agent 工具呼叫)。核心是先反向扮攻擊者([[攻擊者思維稽核]]),再用四問定位缺漏的防線([[縱深防禦]])。
步驟
第零步:先當壞人
盯著這個入口問「如果我想搞破壞,它能讓我做什麼」。列出它白白送給攻擊者的能力(對誰開放、能改什麼、能改的東西有多核心)。
四問口訣
看到一個「能讓外面的人改東西」的入口,立刻問:
- 有沒有確認是本人剛剛按的? — 防 CSRF,對應 nonce / 一次性通行證。
- 有沒有查這個人有沒有資格? — 權限檢查,對應 capability / 角色驗證。
- 這個入口是不是不小心對所有人開放了? — 移除對未登入者開放(如 WordPress 的
wp_ajax_nopriv_)。 - 它能改的東西,有沒有限制在「只准改這幾項」? — 寫入白名單,拒絕清單以外的鍵值。
修補紀律
四道當成一整組補齊,不要補完第一個洞就收手。把任一道拿掉,入口都還有風險。
適用場景
註:這四問管的是「寫入端」(接收輸入後執行寫入/修改)。若入口涉及把輸入帶進 SQL 查詢(搜尋、篩選、排序、自訂列表),要再搭配 [[$wpdb SQL 注入審查四規則]] 檢查「查詢端」的注入破口。兩套合起來才覆蓋外掛的資料庫攻擊面。
- 後台設定 / 資料寫入的 AJAX handler
- REST API 端點(搭配 [[三層 API 驗證]] 的簽章與時間戳)
- 靜態網站的表單接收端、Webhook 接收端
- AI 開發後的安全複查——AI 只回答被問的問題,能跑不等於安全([[ai-是放大器]])
- AI agent 可呼叫外部工具時,白名單化「可執行的動作」
限制
- 只涵蓋已知攻擊模式,未知行為型攻擊需另以流量基準線偵測。
- 白名單在輸入空間無法窮舉時失效,需補型別驗證與安全輸出。
- 是人工自檢規則,不取代自動化掃描與滲透測試。
關聯概念
- [[攻擊者思維稽核]]
- [[縱深防禦]]
- [[SQL 注入防範]]
- [[$wpdb SQL 注入審查四規則]]
- [[三層 API 驗證]]
- [[通訊平台 Bot 安全設計]]