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. 資安基礎篇
- 01-1. 什麼是 Web 資安?為什麼重要? ⏱️ 8min
- 01-2. CIA 三元組:機密性、完整性、可用性 ⏱️ 10min
- 01-3. 常見攻擊類型概覽 ⏱️ 12min
- 01-4. 攻擊者思維 vs 防禦者思維 ⏱️ 10min
02. Injection 注入攻擊篇(面試必考 ⭐⭐⭐)
- 02-1. SQL Injection 基礎:什麼是 SQL 注入? ⏱️ 15min
- 02-2. SQL Injection 攻擊技巧(Union、Blind、Time-based) ⏱️ 18min
- 02-3. SQL Injection 防禦:Prepared Statements ⏱️ 12min
- 02-4. NoSQL Injection(MongoDB、Redis) ⏱️ 12min
- 02-5. Command Injection:OS 命令注入 ⏱️ 10min
- 02-6. LDAP/XML/XPath Injection ⏱️ 10min
03. XSS 跨站腳本攻擊篇(面試必考 ⭐⭐⭐)
- 03-1. XSS 基礎:什麼是跨站腳本攻擊? ⏱️ 12min
- 03-2. Reflected XSS(反射型) ⏱️ 10min
- 03-3. Stored XSS(儲存型) ⏱️ 10min
- 03-4. DOM-based XSS ⏱️ 12min
- 03-5. XSS 攻擊實例:Cookie 竊取、釣魚 ⏱️ 15min
- 03-6. XSS 防禦完整指南:編碼、CSP、HttpOnly ⏱️ 15min
💡 進階核心
04. 身份驗證與會話管理篇
- 04-1. 密碼安全:哈希、加鹽、Bcrypt ⏱️ 12min
- 04-2. Session vs Token(JWT) ⏱️ 15min
- 04-3. Cookie 安全屬性:HttpOnly、Secure、SameSite ⏱️ 10min
- 04-4. 常見認證漏洞(Session Fixation、Hijacking) ⏱️ 12min
- 04-5. 多因素認證(MFA/2FA) ⏱️ 10min
- 04-6. OAuth 2.0 與 OpenID Connect ⏱️ 15min
05. CSRF 跨站請求偽造篇(面試必考 ⭐⭐⭐)
- 05-1. CSRF 基礎:什麼是跨站請求偽造? ⏱️ 12min
- 05-2. CSRF 攻擊實例 ⏱️ 10min
- 05-3. CSRF 防禦:Token、SameSite Cookie ⏱️ 12min
- 05-4. CSRF vs XSS:區別與關聯 ⏱️ 8min
06. 存取控制篇
- 06-1. IDOR:不安全的直接物件引用 ⏱️ 10min
- 06-2. Path Traversal:目錄遍歷攻擊 ⏱️ 12min
- 06-3. Mass Assignment:批量賦值漏洞 ⏱️ 12min ⭐ Django 重點
- 06-4. Broken Access Control ⏱️ 10min
- 06-5. API 授權最佳實踐 ⏱️ 12min
🌐 加密與 OWASP Top 10
07. 加密與安全通訊篇
- 07-1. 加密基礎:對稱 vs 非對稱加密 ⏱️ 12min
- 07-2. HTTPS/TLS 原理深入 ⏱️ 15min
- 07-3. 證書驗證與 PKI ⏱️ 12min
- 07-4. 常見加密錯誤(弱演算法、硬編碼金鑰) ⏱️ 10min
- 07-5. 端到端加密(E2EE) ⏱️ 12min
08. OWASP Top 10 (2021) 篇(面試重點 ⭐⭐⭐)
- 08-1. OWASP Top 10 概覽 ⏱️ 15min
- 08-2. A01: Broken Access Control ⏱️ 12min
- 08-3. A02: Cryptographic Failures ⏱️ 12min
- 08-4. A03: Injection ⏱️ 10min
- 08-5. A04: Insecure Design ⏱️ 12min
- 08-6. A05: Security Misconfiguration ⏱️ 10min
- 08-7. A06: Vulnerable and Outdated Components ⏱️ 10min
- 08-8. A07: Identification and Authentication Failures ⏱️ 12min
- 08-9. A08: Software and Data Integrity Failures ⏱️ 12min
- 08-10. A09: Security Logging and Monitoring Failures ⏱️ 10min
- 08-11. A10: Server-Side Request Forgery (SSRF) ⏱️ 15min
📱 高危進階攻擊
09. 高危進階攻擊篇
- 09-1. XXE (XML External Entity) ⏱️ 12min
- 09-2. Insecure Deserialization:反序列化攻擊 ⏱️ 15min ⭐ 可 RCE
- 09-3. SSRF:伺服器端請求偽造 ⏱️ 18min ⭐ 雲端必學
- 09-4. File Upload Vulnerabilities ⏱️ 12min
- 09-5. Open Redirect ⏱️ 8min
- 09-6. Clickjacking ⏱️ 8min
- 09-7. Race Conditions ⏱️ 10min
10. Django 安全專題篇(Django 開發者必讀 ⭐⭐⭐)
- 10-1. Django Security Overview ⏱️ 15min
- 10-2. Django CSRF 保護機制 ⏱️ 12min
- 10-3. Django ORM 與 SQL Injection ⏱️ 12min
- 10-4. Django Template 自動轉義 ⏱️ 10min
- 10-5. Django 權限與認證最佳實踐 ⏱️ 15min
- 10-6. Django Security Middleware ⏱️ 12min
- 10-7. Django REST Framework 安全 ⏱️ 15min
- 10-8. Django 安全檢查清單 ⏱️ 10min
11. 防禦策略與工具篇
- 11-1. Secure SDLC:安全開發生命週期 ⏱️ 12min
- 11-2. 輸入驗證與數據淨化 ⏱️ 10min
- 11-3. 最小權限原則 ⏱️ 8min
- 11-4. 縱深防禦策略 ⏱️ 12min
- 11-5. 安全配置檢查清單 ⏱️ 10min
- 11-6. 事件響應與恢復 ⏱️ 12min
- 11-7. Burp Suite 基礎 ⏱️ 15min
- 11-8. OWASP ZAP 使用指南 ⏱️ 15min
🎯 學習路徑
🌟 初學者路徑(基礎必學 - 4 週)
目標:建立資安基礎,理解核心攻擊與防禦
第 1 週:資安基礎與 SQL Injection
- 01-1 → 01-2 → 01-3 → 01-4(建立資安觀念)
- 02-1 → 02-2 → 02-3(掌握 SQL Injection)
第 2 週:XSS 與 CSRF
- 03-1 → 03-2 → 03-3 → 03-6(完整掌握 XSS)
- 05-1 → 05-2 → 05-3(理解 CSRF)
第 3 週:身份驗證與存取控制
- 04-1 → 04-2 → 04-3(密碼與 Session 安全)
- 06-1 → 06-2 → 06-3(存取控制漏洞)
第 4 週:Django 專題
- 10-1 → 10-2 → 10-3 → 10-8(Django 安全實踐)
完成後你將能夠: 識別常見漏洞、編寫安全的 Django 代碼、通過初級資安面試
🚀 進階路徑(深入應用 - 4 週)
目標:掌握 OWASP Top 10、高危攻擊、工具使用
第 5 週:OWASP Top 10(上)
- 08-1 → 08-2 → 08-3 → 08-4 → 08-5 → 08-6
第 6 週:OWASP Top 10(下)
- 08-7 → 08-8 → 08-9 → 08-10 → 08-11
第 7 週:高危進階攻擊
- 09-1(XXE)→ 09-2(反序列化)→ 09-3(SSRF)
- 09-4 → 09-5 → 09-6 → 09-7
第 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 內建代碼掃描
🔗 相關主題連結
網路協定
- 網路協定完整指南 - HTTP、HTTPS、WebSocket 等協定
系統設計
- System Design 系列 - 分散式系統安全設計
資料庫
- 資料庫系列 - 資料庫安全與優化
📊 學習統計
- 總章節數: 11 個主題
- 總文章數: 60+ 篇
- 總閱讀時間: ~15 小時
- 涵蓋漏洞類型: 30+ 種
漏洞重要性評級
| 類別 | 面試頻率 | 實戰重要性 | 學習優先級 |
|---|---|---|---|
| SQL Injection | ★★★ 必考 | ⭐⭐⭐ 最高 | 🔥 第一優先 |
| XSS | ★★★ 必考 | ⭐⭐⭐ 最高 | 🔥 第一優先 |
| CSRF | ★★★ 必考 | ⭐⭐⭐ 最高 | 🔥 第一優先 |
| OWASP Top 10 | ★★★ 必考 | ⭐⭐⭐ 最高 | 🔥 第一優先 |
| 身份驗證 | ★★ 常考 | ⭐⭐⭐ 最高 | ⚡ 第二優先 |
| 存取控制 | ★★ 常考 | ⭐⭐⭐ 最高 | ⚡ 第二優先 |
| SSRF | ★★ 常考 | ⭐⭐⭐ 最高 | ⚡ 第二優先(雲端必學) |
| 反序列化 | ★ 偶爾考 | ⭐⭐⭐ 最高 | ⚡ 第二優先(可 RCE) |
| 加密 | ★★ 常考 | ⭐⭐ 高 | 💡 第三優先 |
| XXE | ★ 偶爾考 | ⭐⭐ 高 | 💡 第三優先 |
| 其他攻擊 | ★ 偶爾考 | ⭐ 中 | 📚 了解即可 |
💡 學習建議
時間分配建議
- 系統學習: 每天 1-2 小時,8-10 週完成全部內容
- 面試準備: 每天 2-3 小時,2-3 週密集複習高頻考點
- 按需學習: 根據工作需求,選擇特定章節深入學習
學習方式
- 理論學習(30%) - 閱讀文章,理解漏洞原理
- 實戰練習(50%) - 在 DVWA、WebGoat 等環境實際測試
- 代碼審查(20%) - 找出自己或開源專案的漏洞,練習修復
實作建議
- 🔨 邊學邊做: 每學完一個漏洞,立即在練習平台測試
- 📝 做筆記: 整理每種攻擊的「原理 → 攻擊 → 防禦」三步驟
- 💻 寫防禦代碼: 實作 Prepared Statements、輸出編碼等防禦措施
- 🔍 代碼審查: 審查自己過去的代碼,找出潛在漏洞
- 🎯 專案應用: 在實際 Django 專案中應用安全實踐
面試重點提醒
面試最常考的 5 個主題:
- ⭐⭐⭐ SQL Injection 原理與 Prepared Statements(必考)
- ⭐⭐⭐ XSS 三種類型與防禦方法(必考)
- ⭐⭐⭐ CSRF 原理與 Token 防禦(必考)
- ⭐⭐⭐ OWASP Top 10 概覽(必考)
- ⭐⭐ 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 StatementsXSS
<!-- 面試必考:這段代碼有什麼問題? -->
<div>歡迎, {{ username }}</div>
<!-- 答案:需要 HTML 轉義,否則有 XSS 風險 -->
<!-- Django 正確做法:{{ username|escape }} 或自動轉義 -->CSRF
# 面試必考:Django 如何防禦 CSRF?
# 答案:
# 1. CSRF Token(@csrf_protect 裝飾器)
# 2. SameSite Cookie 屬性
# 3. 檢查 Referer HeaderOWASP 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