Yoru Karu Studio
程式設計學習筆記 | 生活心得程式設計學習筆記 | 生活心得
⚠️ 免責聲明 本文內容僅供教育與學習用途。請勿將文中技術用於任何未經授權的系統或惡意目的。所有演練應在本地測試環境或專門的安全練習平台進行。
📚 本篇重點 🎯 建立本地 XSS 演練環境 🔍 實戰 5 個完整的 XSS 案例 🛡️ 從攻擊者和防禦者視角學習 💼 準備技術面試的實戰經驗 閱讀時間: 約 25 分鐘 難度: ⭐⭐⭐ 中高階
1️⃣ 建立演練環境 方案 1: 本地 Django 項目(推薦) 我們將建立一個故意包含漏洞的 Django 應用,用於學習和演練。
Step 1: 建立項目 # 建立項目目錄 mkdir xss-lab cd xss-lab # 建立虛擬環境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 安裝 Django pip install django # 建立 Django 項目 django-admin startproject xsslab .
🐬 MySQL Protocol 完整指南 ⏱️ 閱讀時間: 12 分鐘 🎯 難度: ⭐⭐ (中等)
🎯 本篇重點 理解 MySQL 客戶端/伺服器協定的原理、連線建立流程、驗證過程、查詢執行機制,以及連線池如何優化效能。
🤔 什麼是 MySQL Protocol? MySQL Protocol = MySQL 客戶端與伺服器之間的通訊協定
一句話解釋: MySQL Protocol 定義了客戶端(如 MySQL Workbench、程式)如何與 MySQL Server 建立連線、驗證身份、執行查詢的規則。
比喻:餐廳點餐流程 1. 進門(建立連線) 2. 出示會員卡(驗證身份) 3. 點餐(執行查詢) 4. 結帳離開(關閉連線) MySQL Protocol 就是規範這整套流程的「標準作業程序」 🏗️ MySQL Protocol 在網路模型中的位置 OSI 7 層模型 ┌──────────────────────────────┬─────────────────┐ │ 7. Application Layer (應用層) │ MySQL Protocol │ ← MySQL 在這裡 ├──────────────────────────────┼─────────────────┤ │ 6. Presentation Layer (表示層)│ 加密、壓縮 │ ├──────────────────────────────┼─────────────────┤ │ 5.
🚀 MQTT 協定詳解 MQTT 在網路模型中的位置 ┌──────────────────────────────────────────────────────────┐ │ OSI 七層模型 TCP/IP 四層模型 │ ├──────────────────────────────────────────────────────────┤ │ 7. 應用層 (Application) │ │ ├─ MQTT ───────────────┐ 應用層 (Application) │ │ │ (MQTT, HTTP, STOMP...) │ ├─────────────────────────────┤ │ │ 6. 表現層 (Presentation) │ │ ├─────────────────────────────┤ │ │ 5. 會話層 (Session) │ │ ├─────────────────────────────┼─────────────────────────────┤ │ 4. 傳輸層 (Transport) │ 傳輸層 (Transport) │ │ └─ TCP ─────────────────┘ (TCP) │ ├─────────────────────────────┼─────────────────────────────┤ │ 3. 網路層 (Network) │ 網際網路層 (Internet) │ │ └─ IP │ (IP, ICMP, ARP) │ ├─────────────────────────────┼─────────────────────────────┤ │ 2.
08-3. 分布式鎖實現 📌 什麼是分布式鎖? 在分布式系統中,當多台服務器需要訪問同一個共享資源時,需要一種機制來協調它們的訪問順序,這就是分布式鎖。
為什麼需要分布式鎖? 單機環境 vs 分布式環境 # ❌ 單機環境:Python 線程鎖可以工作 import threading lock = threading.Lock() def update_inventory(): with lock: # 臨界區代碼 inventory = get_inventory() inventory -= 1 save_inventory(inventory)問題: 當有多台 Django 服務器時,每台服務器有自己的內存空間,threading.Lock() 無法跨進程工作!
服務器 A (lock 1) → 數據庫 ← 服務器 B (lock 2) ↓ ↓ 各自的鎖互不影響,仍然會出現競態條件! 🎯 分布式鎖的特性 一個好的分布式鎖應該具備:
1. 互斥性 在任意時刻,只有一個客戶端能持有鎖
2. 不會死鎖 即使持有鎖的客戶端崩潰,鎖最終也能被釋放
3. 容錯性 只要大部分節點正常運行,客戶端就能加鎖和解鎖
4. 加鎖和解鎖必須是同一個客戶端 不能把別人的鎖給解了
💻 實現方式對比 方案 優點 缺點 適用場景 Redis 性能高、實現簡單 可能存在鎖丟失風險 大部分場景 數據庫 可靠性高、無需額外組件 性能較差 低並發場景 Zookeeper 可靠性最高、支持阻塞鎖 複雜度高、需額外維護 對一致性要求極高的場景 🔴 方案 1:Redis 分布式鎖(推薦) 基礎版本:SETNX + EXPIRE import redis import time import uuid class RedisLock: """基礎版本的 Redis 分布式鎖""" def __init__(self, redis_client, lock_name, expire_time=10): """ :param redis_client: Redis 客戶端 :param lock_name: 鎖的名稱 :param expire_time: 鎖的過期時間(秒) """ self.
⚠️ 免責聲明 本文內容僅供教育與學習用途。請勿將文中技術用於任何未經授權的系統或惡意目的。
📚 本篇重點 🎯 理解 DOM-based XSS 的獨特性 🔍 識別危險的 JavaScript API 🛡️ 學習前端防禦策略 💼 掌握實際案例與檢測方法 閱讀時間: 約 18 分鐘 難度: ⭐⭐⭐ 中高階
1️⃣ 什麼是 DOM-based XSS? 📖 定義 DOM-based XSS 是一種特殊的 XSS 攻擊,攻擊完全發生在客戶端(瀏覽器),惡意 Payload 從未發送到伺服器,而是通過操作 DOM(Document Object Model)直接在瀏覽器中執行。
🔑 關鍵差異 特徵 Reflected/Stored XSS DOM-based XSS 攻擊位置 伺服器端 → 客戶端 🔴 純客戶端 Payload 傳遞 HTTP 請求 → 響應 🔴 URL Fragment (#) 伺服器記錄 ✅ 有記錄 🔴 無記錄(# 後不發送) 檢測難度 較易 🔴 困難 防禦層 伺服器 + 客戶端 🔴 只能在客戶端 WAF 有效性 有效 🔴 無效 🔄 攻擊流程對比 傳統 XSS (Reflected/Stored):
📨 即時通訊協定概覽 🎯 什麼是即時通訊協定? 想像一個郵局系統,有不同的郵寄方式:
平信:HTTP,寄出去就不管了,沒有回執 掛號信:有送達確認,但比較慢 快遞:專人配送,可以即時追蹤 郵政信箱:訂閱制,有新信就通知 即時通訊協定就像這些不同的郵寄方式,針對不同需求設計出不同的訊息傳遞機制。
🏗️ 常見的即時通訊協定 1️⃣ MQTT (Message Queuing Telemetry Transport) 特性:輕量級、低頻寬、低功耗
💡 比喻:訂閱制報紙 你訂閱了「體育版」,報社有新的體育新聞就會自動送到你家 不需要你每天去報社問「有新聞嗎?」適用場景:
⚡ IoT 物聯網裝置(智慧家居、感測器) 📱 行動裝置(省電、省流量) 🌐 網路不穩定環境 架構:發布/訂閱模式(Pub/Sub)
Publisher → Broker → Subscriber 裝置 A 發布 "temperature/living-room" = 25°C 裝置 B 訂閱 "temperature/#" → 收到通知Python 範例:
import paho.mqtt.client as mqtt # 訂閱者 def on_connect(client, userdata, flags, rc): print("連接成功") client.subscribe("home/temperature") # 訂閱溫度主題 def on_message(client, userdata, msg): print(f"收到訊息:{msg.topic} = {msg.