攻擊者視角安全稽核四問

方法論

攻擊者視角安全稽核四問

概述

一套可重複套用的程式碼安全自檢規則,把零散的安全注意事項濃縮成四個問題。適用於任何「接收外部輸入 → 執行寫入/修改動作」的入口(後台 AJAX、API 端點、表單處理、Webhook、AI agent 工具呼叫)。核心是先反向扮攻擊者([[攻擊者思維稽核]]),再用四問定位缺漏的防線([[縱深防禦]])。

步驟

第零步:先當壞人

盯著這個入口問「如果我想搞破壞,它能讓我做什麼」。列出它白白送給攻擊者的能力(對誰開放、能改什麼、能改的東西有多核心)。

四問口訣

看到一個「能讓外面的人改東西」的入口,立刻問:

  1. 有沒有確認是本人剛剛按的? — 防 CSRF,對應 nonce / 一次性通行證。
  2. 有沒有查這個人有沒有資格? — 權限檢查,對應 capability / 角色驗證。
  3. 這個入口是不是不小心對所有人開放了? — 移除對未登入者開放(如 WordPress 的 wp_ajax_nopriv_)。
  4. 它能改的東西,有沒有限制在「只准改這幾項」? — 寫入白名單,拒絕清單以外的鍵值。

修補紀律

四道當成一整組補齊,不要補完第一個洞就收手。把任一道拿掉,入口都還有風險。

適用場景

註:這四問管的是「寫入端」(接收輸入後執行寫入/修改)。若入口涉及把輸入帶進 SQL 查詢(搜尋、篩選、排序、自訂列表),要再搭配 [[$wpdb SQL 注入審查四規則]] 檢查「查詢端」的注入破口。兩套合起來才覆蓋外掛的資料庫攻擊面。

  • 後台設定 / 資料寫入的 AJAX handler
  • REST API 端點(搭配 [[三層 API 驗證]] 的簽章與時間戳)
  • 靜態網站的表單接收端、Webhook 接收端
  • AI 開發後的安全複查——AI 只回答被問的問題,能跑不等於安全([[ai-是放大器]])
  • AI agent 可呼叫外部工具時,白名單化「可執行的動作」

限制

  • 只涵蓋已知攻擊模式,未知行為型攻擊需另以流量基準線偵測。
  • 白名單在輸入空間無法窮舉時失效,需補型別驗證與安全輸出。
  • 是人工自檢規則,不取代自動化掃描與滲透測試。

關聯概念

  • [[攻擊者思維稽核]]
  • [[縱深防禦]]
  • [[SQL 注入防範]]
  • [[$wpdb SQL 注入審查四規則]]
  • [[三層 API 驗證]]
  • [[通訊平台 Bot 安全設計]]