經過了十多天的實作,從最基礎的暴力破解,一路挑戰了SQL注入、命令注入、跨站腳本(XSS 家族)、檔案上傳與前端JavaScript邏輯漏洞。今天作為DVWA實作篇的完結,我們不只看個別漏洞,而是將所有學過的攻擊手法進行系統化盤點,並整理出現代Web開發不可或缺的資安防禦金字塔!
1.SQL 注入(SQL Injection)
核心成因:後端未適當處理使用者輸入,直接將未過濾的字串拼接進 SQL 語句中。
攻擊影響:資料庫敏感資料洩漏、資料遭篡改,甚至取得資料庫高權限。
關鍵防禦:使用 Prepared Statements(預編譯查詢 / 參數化查詢),從根本切斷 SQL 語法被改變的可能性。
2.命令注入(Command Injection)
核心成因:後端程式將使用者輸入直接帶入系統 Shell(如 system()、exec())中執行。
攻擊影響:攻擊者可在伺服器執行任意系統指令,直接取得系統控制權(RCE)。
關鍵防禦:避免呼叫系統 Shell API,若必須呼叫則需搭配嚴格的輸入白名單驗證。
3.跨站腳本攻擊(XSS:Reflected / Stored / DOM-based)
核心成因:未對輸出至前端的內容進行 HTML 轉義,或前端 JS 將不可信資料傳遞給危險渲染函式。
攻擊影響:劫持使用者 Session(竊取 Cookie)、發動釣魚攻擊、惡意重新導向。
關鍵防禦:實施 Output Encoding(HTML 轉義),並部署 CSP(內容安全策略) 標頭阻擋未授權腳本。
4.跨站請求偽造(CSRF)
核心成因:瀏覽器發送跨站請求時會自動帶上 Cookie,而後端未校驗請求是否真正來自使用者本人。
攻擊影響:冒充已登入使用者發送敏感請求。
關鍵防禦:引進一次性 Anti-CSRF Token,並配合 Cookie 的 SameSite=Lax/Strict 屬性。\
5.檔案上傳與包含漏洞(File Upload / Inclusion)
核心成因:後端未驗證上傳副檔名與副檔名內容,或使用動態路徑拼接直接 include 外部檔案。
攻擊影響:上傳 WebShell 取得伺服器權限,或讀取伺服器敏感檔案(如 /etc/passwd)。
關鍵防禦:限制上傳檔案類型與目錄執行權限、將檔案儲存於 Web Root 外,並停用危險包含函式。
6.前端邏輯漏洞(JavaScript / Client-side Flaw)
核心成因:將關鍵的安全驗證邏輯完全放在前端 JavaScript 執行。
攻擊影響:攻擊者可透過瀏覽器 DevTools 逆向分析並輕易繞過前端限制。
關鍵防禦:貫徹零信任客戶端,所有安全規則必須在伺服器後端強制執行。
1.基礎層:傳輸安全與環境設定(HTTPS 普及、強 Session 配置、HTTP Security Headers)
2.架構層:身份鑑別與授權(Auth & Access Control)(強密碼策略、後端 RBAC 權限檢查、Anti-CSRF Token)
3.程式碼層:安全的開發規範(參數化查詢預防 SQLi、防禦性編程、輸入過濾)
4.監控與應變層(WAF 系統、資安日誌監控、自動化弱點掃描)