Web 資安完整指南

從零開始學習 Web 安全:SQL Injection、XSS、OWASP Top 10,專為 Django 開發者設計

🛡️ Web 資安完整指南


課程簡介

本系列從零開始系統化講解 Web 資安,涵蓋 SQL Injection、XSS、CSRF、OWASP Top 10、SSRF、反序列化攻擊等核心主題,並深入 Django 框架的安全實踐。專為全端工程師、資安新手、面試準備設計,幫助你建立完整的資安防禦能力。

為什麼要學資安?

  • ✅ 避免數據洩漏(Capital One、Equifax 都因資安漏洞損失慘重)
  • ✅ 通過技術面試(SQL Injection、XSS 必考)
  • ✅ 提升職場競爭力(資安意識是優秀工程師的標配)
  • ✅ 保護用戶隱私(開發者的責任)

📚 章節目錄

🔰 基礎必學

01. 資安基礎篇

02. Injection 注入攻擊篇(面試必考 ⭐⭐⭐)

03. XSS 跨站腳本攻擊篇(面試必考 ⭐⭐⭐)


💡 進階核心

04. 身份驗證與會話管理篇

05. CSRF 跨站請求偽造篇(面試必考 ⭐⭐⭐)

06. 存取控制篇


🌐 加密與 OWASP Top 10

07. 加密與安全通訊篇

08. OWASP Top 10 (2021) 篇(面試重點 ⭐⭐⭐)


📱 高危進階攻擊

09. 高危進階攻擊篇

10. Django 安全專題篇(Django 開發者必讀 ⭐⭐⭐)

11. 防禦策略與工具篇


🎯 學習路徑

🌟 初學者路徑(基礎必學 - 4 週)

目標:建立資安基礎,理解核心攻擊與防禦

  1. 第 1 週:資安基礎與 SQL Injection

    • 01-1 → 01-2 → 01-3 → 01-4(建立資安觀念)
    • 02-1 → 02-2 → 02-3(掌握 SQL Injection)
  2. 第 2 週:XSS 與 CSRF

    • 03-1 → 03-2 → 03-3 → 03-6(完整掌握 XSS)
    • 05-1 → 05-2 → 05-3(理解 CSRF)
  3. 第 3 週:身份驗證與存取控制

    • 04-1 → 04-2 → 04-3(密碼與 Session 安全)
    • 06-1 → 06-2 → 06-3(存取控制漏洞)
  4. 第 4 週:Django 專題

    • 10-1 → 10-2 → 10-3 → 10-8(Django 安全實踐)

完成後你將能夠: 識別常見漏洞、編寫安全的 Django 代碼、通過初級資安面試


🚀 進階路徑(深入應用 - 4 週)

目標:掌握 OWASP Top 10、高危攻擊、工具使用

  1. 第 5 週:OWASP Top 10(上)

    • 08-1 → 08-2 → 08-3 → 08-4 → 08-5 → 08-6
  2. 第 6 週:OWASP Top 10(下)

    • 08-7 → 08-8 → 08-9 → 08-10 → 08-11
  3. 第 7 週:高危進階攻擊

    • 09-1(XXE)→ 09-2(反序列化)→ 09-3(SSRF)
    • 09-4 → 09-5 → 09-6 → 09-7
  4. 第 8 週:加密與防禦

    • 07-1 → 07-2 → 07-3 → 07-4(加密原理)
    • 11-1 → 11-2 → 11-4 → 11-5(防禦策略)

完成後你將能夠: 理解 OWASP Top 10、處理複雜漏洞、進行安全代碼審查


📝 面試準備路徑(2-3 週密集)

目標:快速掌握面試高頻考點

第 1 週:三大必考攻擊

  • Day 1-2:SQL Injection

    • ✅ 02-1, 02-2, 02-3(原理、攻擊、防禦)★★★
    • 🎯 面試題:Prepared Statements 如何防禦?
  • Day 3-4:XSS

    • ✅ 03-1, 03-2, 03-6(三種類型、防禦方法)★★★
    • 🎯 面試題:如何防禦 XSS?說出至少 3 種方法
  • Day 5-6:CSRF

    • ✅ 05-1, 05-2, 05-3(原理、攻擊、Token 防禦)★★★
    • 🎯 面試題:CSRF 與 XSS 的差異?
  • Day 7:綜合複習

    • ✅ 複習三大攻擊的防禦代碼

第 2 週:OWASP Top 10 與進階攻擊

  • Day 8-9:OWASP Top 10

    • ✅ 08-1(概覽,記住前 5 名)★★★
    • ✅ 08-2(Broken Access Control)★★
    • ✅ 08-11(SSRF)★★
  • Day 10-11:高危攻擊

    • ✅ 09-2(反序列化攻擊)★★
    • ✅ 09-3(SSRF 深入)★★
    • ✅ 06-2(Path Traversal)★★
  • Day 12-13:身份驗證

    • ✅ 04-1(密碼安全)★★
    • ✅ 04-2(Session vs Token)★★
    • ✅ 04-3(Cookie 安全屬性)★★
  • Day 14:Django 專題

    • ✅ 10-1(Django Security Overview)★★★
    • ✅ 10-8(安全檢查清單)★★★

第 3 週:模擬面試與實戰

  • Day 15-18:面試模擬

    • 練習口述各種攻擊的原理與防禦
    • 編寫防禦代碼(Prepared Statements、輸出編碼)
    • 代碼審查練習(找出漏洞)
  • Day 19-21:綜合複習

    • 整理筆記、製作 Cheat Sheet
    • 複習高頻面試題

高頻面試題覆蓋:

  • ✅ SQL Injection 原理與防禦(100% 必考)
  • ✅ XSS 三種類型與防禦方法(100% 必考)
  • ✅ CSRF 原理與 Token 防禦(90% 必考)
  • ✅ OWASP Top 10 前 5 名(80% 必考)
  • ✅ Session vs Token 差異(70% 必考)
  • ✅ 密碼安全:Bcrypt 原理(60% 必考)
  • ✅ SSRF 攻擊與防禦(50% 必考,雲端崗位更高)
  • ✅ Django CSRF 保護機制(Django 崗位必考)

🎯 專業領域路徑

🌐 全端工程師

重點: 02(SQL Injection)→ 03(XSS)→ 05(CSRF)→ 10(Django)→ 06(存取控制)

🔐 資訊安全工程師

重點: 全部章節 → 11-7, 11-8(工具實戰)

📊 後端工程師

重點: 02(SQL Injection)→ 06(存取控制)→ 09-2, 09-3(進階攻擊)→ 10(Django)

📱 前端工程師

重點: 03(XSS)→ 05(CSRF)→ 04-3(Cookie 安全)→ 07(加密)

☁️ 雲端/DevOps 工程師

重點: 09-3(SSRF)→ 08-6(Security Misconfiguration)→ 11(防禦策略)


📖 適合對象

主要受眾

  • 🎓 準備技術面試的工程師 - 系統化掌握資安高頻考點
  • 💻 Django 全端工程師 - 深入理解 Django 安全機制
  • 🔐 資安新手 - 從零開始建立完整資安知識體系
  • 📊 後端工程師 - 掌握 SQL Injection、存取控制、API 安全

次要受眾

  • 📱 前端工程師 - 理解 XSS、CSRF、Cookie 安全
  • ☁️ 雲端工程師 - 學習 SSRF、安全配置
  • 🎓 資工系學生 - 建立資安基礎,準備實習/正職面試
  • 💼 技術主管 - 建立團隊資安規範、代碼審查標準

🔧 實戰工具與資源

漏洞掃描與測試

  • Burp Suite Community - Web 漏洞掃描神器(必學!)
  • OWASP ZAP - 開源安全測試工具
  • SQLMap - 自動化 SQL Injection 測試
  • XSStrike - XSS 漏洞檢測

練習平台

  • PortSwigger Web Security Academy - 免費互動式學習(強烈推薦!)
  • OWASP WebGoat - 刻意設計的漏洞應用
  • HackTheBox - 滲透測試實戰
  • TryHackMe - 引導式資安學習
  • DVWA (Damn Vulnerable Web App) - 本地漏洞練習環境

Django 安全工具

  • django-security - Django 安全檢查工具
  • Bandit - Python 代碼安全分析
  • Safety - Python 依賴安全檢查
  • pip-audit - 檢查套件漏洞

代碼審查

  • Semgrep - 靜態代碼分析(SAST)
  • SonarQube - 代碼品質與安全檢查
  • GitHub CodeQL - GitHub 內建代碼掃描

🔗 相關主題連結

網路協定

系統設計

資料庫


📊 學習統計

  • 總章節數: 11 個主題
  • 總文章數: 60+ 篇
  • 總閱讀時間: ~15 小時
  • 涵蓋漏洞類型: 30+ 種

漏洞重要性評級

類別面試頻率實戰重要性學習優先級
SQL Injection★★★ 必考⭐⭐⭐ 最高🔥 第一優先
XSS★★★ 必考⭐⭐⭐ 最高🔥 第一優先
CSRF★★★ 必考⭐⭐⭐ 最高🔥 第一優先
OWASP Top 10★★★ 必考⭐⭐⭐ 最高🔥 第一優先
身份驗證★★ 常考⭐⭐⭐ 最高⚡ 第二優先
存取控制★★ 常考⭐⭐⭐ 最高⚡ 第二優先
SSRF★★ 常考⭐⭐⭐ 最高⚡ 第二優先(雲端必學)
反序列化★ 偶爾考⭐⭐⭐ 最高⚡ 第二優先(可 RCE)
加密★★ 常考⭐⭐ 高💡 第三優先
XXE★ 偶爾考⭐⭐ 高💡 第三優先
其他攻擊★ 偶爾考⭐ 中📚 了解即可

💡 學習建議

時間分配建議

  • 系統學習: 每天 1-2 小時,8-10 週完成全部內容
  • 面試準備: 每天 2-3 小時,2-3 週密集複習高頻考點
  • 按需學習: 根據工作需求,選擇特定章節深入學習

學習方式

  1. 理論學習(30%) - 閱讀文章,理解漏洞原理
  2. 實戰練習(50%) - 在 DVWA、WebGoat 等環境實際測試
  3. 代碼審查(20%) - 找出自己或開源專案的漏洞,練習修復

實作建議

  • 🔨 邊學邊做: 每學完一個漏洞,立即在練習平台測試
  • 📝 做筆記: 整理每種攻擊的「原理 → 攻擊 → 防禦」三步驟
  • 💻 寫防禦代碼: 實作 Prepared Statements、輸出編碼等防禦措施
  • 🔍 代碼審查: 審查自己過去的代碼,找出潛在漏洞
  • 🎯 專案應用: 在實際 Django 專案中應用安全實踐

面試重點提醒

面試最常考的 5 個主題:

  1. ⭐⭐⭐ SQL Injection 原理與 Prepared Statements(必考)
  2. ⭐⭐⭐ XSS 三種類型與防禦方法(必考)
  3. ⭐⭐⭐ CSRF 原理與 Token 防禦(必考)
  4. ⭐⭐⭐ OWASP Top 10 概覽(必考)
  5. ⭐⭐ Session vs Token、密碼安全(常考)

建立練習環境

# 使用 Docker 建立漏洞練習環境
docker pull vulnerables/web-dvwa
docker run -p 80:80 vulnerables/web-dvwa

# 或使用 OWASP WebGoat
docker run -p 8080:8080 webgoat/goatandwolf

# 訪問 http://localhost:80 開始練習

⚠️ 學習須知

道德使用聲明

本系列文章僅供學習與防禦用途!

允許:

  • 學習漏洞原理以便防禦
  • 在自己的系統/虛擬環境測試
  • 代碼審查與安全改進
  • 道德滲透測試(有授權)
  • 在練習平台(DVWA、WebGoat)測試

絕對禁止:

  • 攻擊未授權的系統
  • 惡意利用漏洞
  • 竊取、刪除數據
  • 破壞服務

⚖️ 違法行為將承擔法律責任!

學習目標

  • ✅ 理解漏洞原理,編寫安全代碼
  • ✅ 通過技術面試
  • ✅ 保護用戶隱私與數據安全
  • ❌ 絕非教導攻擊行為

⚡ 快速開始

如果你只有 1 天時間

閱讀這些必考重點:

  • 02-1 SQL Injection 基礎
  • 03-1 XSS 基礎
  • 05-1 CSRF 基礎
  • 08-1 OWASP Top 10 概覽

如果你只有 1 週時間

按照「面試準備路徑 - 第 1 週」學習(見上方)

如果你有 1 個月時間

按照「初學者路徑」循序漸進學習

如果你是 Django 開發者

直接從這裡開始:

  • 10-1 Django Security Overview
  • 02-3 SQL Injection 防禦
  • 03-6 XSS 防禦
  • 05-3 CSRF 防禦
  • 10-8 Django 安全檢查清單

🎓 面試常考題型預覽

SQL Injection

# 面試必考:這段代碼有什麼問題?
def get_user(user_id):
    query = f"SELECT * FROM users WHERE id = {user_id}"
    return db.execute(query)

# 答案:SQL Injection 風險,應使用 Prepared Statements

XSS

<!-- 面試必考:這段代碼有什麼問題? -->
<div>歡迎, {{ username }}</div>

<!-- 答案:需要 HTML 轉義,否則有 XSS 風險 -->
<!-- Django 正確做法:{{ username|escape }} 或自動轉義 -->

CSRF

# 面試必考:Django 如何防禦 CSRF?
# 答案:
# 1. CSRF Token(@csrf_protect 裝飾器)
# 2. SameSite Cookie 屬性
# 3. 檢查 Referer Header

OWASP Top 10

面試必考:說出 OWASP Top 10 (2021) 前 5 名
答案:
A01: Broken Access Control
A02: Cryptographic Failures
A03: Injection
A04: Insecure Design
A05: Security Misconfiguration

最後更新:2025-01-16

0%