名詞解釋

什麼是 DAST:從外部探測運行中的應用程式以找出弱點

DAST 從外部測試運行中的網頁應用程式,以找出弱點。說明它與 SAST、IAST 和 SCA 的差異,以及如何用於自己的應用程式。

發布於 2026-11-15 更新於 2026-11-15 閱讀時間 2 分鐘
本頁內容

DAST(動態應用程式安全測試)從外部測試運行中的應用程式,以找出弱點。本頁說明它與其他方法的差異,以及如何用於您自己的應用程式(不涵蓋測試他人網站)。

什麼是 DAST

DAST 是動態應用程式安全測試(dynamic application security testing)的縮寫。OWASP 的 DevSecOps Guideline 將其描述為黑箱測試,可找出運行中應用程式的安全弱點與缺陷。黑箱是指只透過外部可見的部分進行測試,不查看內部原始碼。

實務上,工具會沿著應用程式的頁面與輸入欄位移動,發送測試請求,並在回應中尋找問題跡象。該指南指出,它特別適用於輸入/輸出驗證、驗證機制問題,以及伺服器設定錯誤。

運作方式

1. 將工具指向您自己測試環境的 URL
2. 工具沿著頁面與輸入欄位移動,並發送測試流量
↓ 監看回應內容、標頭與錯誤行為
3. 列出問題跡象;由人員確認並修正
DAST 從外部向運行中的應用程式發送測試請求,並檢視其回應中的問題。它不會讀取原始碼。

與 SAST、IAST 和 SCA 的差異

方法檢查對象是否運行應用程式適合用途
DAST運行中應用程式從外部呈現的行為是輸入/輸出驗證、驗證機制、伺服器設定
SAST原始碼或編譯後的程式碼否在開發早期找出程式編寫問題
IAST應用程式內部行為(透過感測器)是(測試期間)自動化測試期間出現的問題
SCA函式庫與其他相依套件否具有已知弱點(CVE)的元件

關於 SAST,OWASP 列出其限制,例如只能找出相對較少比例的應用程式安全缺陷、誤報多,以及漏掉設定問題。DAST 有助於彌補此缺口,但也並不完整。關於 SCA,請參閱使用 OSV-Scanner 稽核相依套件。

如何用於您自己的應用程式(以 OWASP ZAP 為例)

ZAP(Zed Attack Proxy;前稱 OWASP ZAP)是免費的開放原始碼 DAST 工具。其官方網站目前標示為「ZAP by Checkmarx」。

  1. 準備您管理之測試環境的 URL。使用測試環境,而非正式環境
  2. 執行基準掃描(baseline scan)。根據 ZAP 文件,它只是被動的:預設會執行 1 分鐘的爬蟲(頁面追蹤功能),且不執行任何攻擊。最多只需幾分鐘
  3. 檢視結果,並由人員確認哪些發現為真;誤報是可能發生的
  4. 如有需要,再進行主動掃描,且僅限於測試環境。它會對目標執行已知攻擊,文件說明不得用於您不擁有的網頁應用程式
  5. 定期重新執行,例如在 CI 中,於每次修正後執行

僅針對您擁有或管理之應用程式的測試環境使用

DAST 工具發送的流量與真實攻擊相似。若在您未獲許可測試的網站上執行,可能構成未經授權存取或服務中斷。ZAP 文件同樣表示,不得對您不擁有的網頁應用程式使用主動掃描。在正式環境執行也可能產生副作用,例如建立資料或增加負載。

DAST 會遺漏什麼

ZAP 文件指出,其主動掃描無法找出存取控制失效等邏輯問題,因此應搭配手動測試。像 IDOR 這類讓一位使用者可以看到另一位使用者資料的缺陷,對自動化工具而言很難發現,因為工具不知道正確的行為應該是什麼。您需要自行撰寫測試,要求另一位使用者的 ID,並確認該請求會被拒絕。

另一方面,設定檢查正是 DAST 擅長的部分。關於哪些設定值得調整,請參閱安全標頭:仍然重要的項目。

本站觀點:DAST 是最後一道防線。請以三層思考:程式碼、元件、行為

與其期待單一工具找出所有問題,不如結合三種從不同位置查看的方法,這樣更為實際:先閱讀程式碼(SAST),再檢查元件是否有已知弱點(SCA),最後執行應用程式並從外部測試(DAST)。工具不擅長的「誰可以做什麼」,應以您自己撰寫的測試來保護。不要直接信任工具輸出;修正前請由人員確認。

資料來源(主要)

  • OWASP DevSecOps Guideline,「Dynamic Application Security Testing」— owasp.github.io(DAST 定義,黑箱)
  • OWASP DevSecOps Guideline,「Interactive Application Security Testing」— owasp.github.io(IAST)
  • OWASP Community,「Source Code Analysis Tools」— owasp.org(SAST 及其限制)
  • ZAP Documentation,「Active Scan」— zaproxy.org(不得用於您不擁有的應用程式;無法找出邏輯問題)
  • ZAP Documentation,「Baseline Scan」— zaproxy.org(僅為被動;執行時間)
  • SCA 的說明為一般性定義;並未查證任何單一官方定義

延伸閱讀

FAQ

Q什麼是 DAST?
A

DAST 是動態應用程式安全測試(dynamic application security testing)的縮寫。它從外部對運行中的應用程式發送測試請求,以找出弱點與缺陷。OWASP 的 DevSecOps Guideline 將其描述為黑箱測試,可在不存取原始碼的情況下,找出運行中應用程式的安全弱點與缺陷。

QDAST 與 SAST 有什麼差別?
A

SAST(靜態應用程式安全測試)在不執行的情況下分析原始碼或編譯後的程式碼。DAST 則會執行應用程式,並透過外部請求進行測試。OWASP 指出,SAST 可以在開發早期執行,但只能找出相對較少比例的缺陷,會產生大量誤報,且經常漏掉設定問題。DAST 適合處理只有在應用程式運行時才會出現的問題。

QIAST 和 SCA 是什麼?
A

IAST(互動式應用程式安全測試)在應用程式內部放置感測模組,並在測試過程中監看其行為。SCA(軟體成分分析)檢查您使用的函式庫與其他相依套件是否存在已知弱點。它們查看的位置與 DAST 不同,因此通常一起使用。

QDAST 能找出什麼?
A

OWASP 的指南指出,它特別適用於輸入/輸出驗證、驗證機制問題,以及伺服器設定錯誤。另一方面,OWASP ZAP 文件表示,其主動掃描無法找出存取控制失效等邏輯問題,因此應搭配手動測試。

Q我可以對別人的網站執行 DAST 嗎?
A

不可以。OWASP ZAP 文件明確指出,不得對您不擁有的網頁應用程式使用主動掃描。請僅限於您擁有或管理的應用程式,或您已獲得明確許可(例如書面授權)的對象。使用測試環境而非正式環境較為安全。

QDAST 應該從哪裡開始?
A

從針對您自己測試環境 URL 的 OWASP ZAP 基準掃描(baseline scan)開始。它只是被動的:僅觀察流量,不會執行攻擊。檢視結果後,只有在必要時才進行主動掃描,且僅限於測試環境。