Yoru Karu Studio

程式設計學習筆記 | 生活心得

01-4. 攻擊者思維 vs 防禦者思維

01-4. 攻擊者思維 vs 防禦者思維 ⏱️ 閱讀時間: 10 分鐘 🎯 難度: ⭐ (簡單) ⚠️ 提醒: 本文內容僅供學習與防禦用途 🎯 本篇重點 理解攻擊者如何思考與行動,培養防禦者心態,學習如何從攻擊者角度審視系統弱點,建立縱深防禦策略。 🤔 為什麼要理解攻擊者思維? 孫子兵法的智慧 「知己知彼,百戰不殆」 - 孫子兵法 應用到資安: ✅ 知己(防禦者):了解自己系統的弱點 ✅ 知彼(攻擊者):理解駭客的思維與手法 ✅ 百戰不殆:才能建立有效的防禦 只做防禦,不懂攻擊 = 閉門造車優秀開發者的必備能力 初級開發者: └─ 功能開發完成就好 中級開發者: ├─ 功能開發 └─ 基本測試 高級開發者: ├─ 功能開發 ├─ 完整測試 └─ 考慮邊界情況 資安意識的開發者: ├─ 功能開發 ├─ 完整測試 ├─ 邊界情況 └─ 思考「駭客會如何攻擊?」 區別在於:能否預見潛在風險 🎭 攻擊者思維(Attacker Mindset) 核心特徵 1. 永不放棄 └─ 只要有一個漏洞,就能攻破系統 2. 創意思考 └─ 用開發者沒想到的方式使用功能 3.

Django 面試準備 09-4:緩存更新策略

09-4. 緩存更新策略 📌 核心問題:緩存一致性 緩存與數據庫如何保持一致? 緩存:price = 100 數據庫:price = 100 ↓ 用戶修改價格為 150 緩存:price = 100 ⚠️ 舊數據 數據庫:price = 150 ✅ 新數據不一致的後果: 用戶看到錯誤的數據 訂單金額計算錯誤 庫存顯示不準確 🎯 四大更新策略概覽 策略 誰負責更新 流程 適用場景 Cache Aside 應用程序 先更新 DB,再刪除緩存 ✅ 最常用 Read Through 緩存層 緩存自動從 DB 加載 讀多寫少 Write Through 緩存層 緩存自動更新 DB 強一致性 Write Behind 緩存層 異步更新 DB 高性能要求 🎯 策略 1:Cache Aside(旁路緩存) 最常用的策略 讀流程: 1. 查緩存 → 命中 → 返回 2.

01-3. 常見攻擊類型概覽

01-3. 常見攻擊類型概覽 ⏱️ 閱讀時間: 12 分鐘 🎯 難度: ⭐⭐ (簡單) ⚠️ 提醒: 本文內容僅供學習與防禦用途 🎯 本篇重點 快速認識 10 種最常見的 Web 攻擊類型,理解攻擊原理、危害程度、真實案例,為後續深入學習打下基礎。 📊 攻擊類型總覽 10 大常見攻擊 攻擊類型 面試頻率 危害程度 難度 OWASP Top 10 SQL Injection ⭐⭐⭐ 必考 🔥 極高 ⭐⭐ A03 XSS ⭐⭐⭐ 必考 🔥 高 ⭐⭐ A03 CSRF ⭐⭐⭐ 必考 🔥 高 ⭐ A01 Broken Access Control ⭐⭐ 常考 🔥 極高 ⭐ A01 SSRF ⭐⭐ 常考 🔥 極高 ⭐⭐⭐ A10 Insecure Deserialization ⭐ 偶爾考 🔥 極高 ⭐⭐⭐ A08 Path Traversal ⭐⭐ 常考 🔥 高 ⭐ A01 XXE ⭐ 偶爾考 🔥 高 ⭐⭐ A03 Authentication Failures ⭐⭐ 常考 🔥 高 ⭐ A07 Security Misconfiguration ⭐⭐ 常考 🔥 中高 ⭐ A05 💉 1.

09-4. SMTP 認證:從開放中繼到安全驗證

🔐 SMTP 認證:從開放中繼到安全驗證 ⏱️ 閱讀時間: 12 分鐘 🎯 難度: ⭐⭐⭐ (中等) 🏗️ SMTP 認證在網路模型中的位置 OSI 7 層模型 ┌──────────────────────────────┬─────────────────────────┐ │ 7. Application Layer (應用層) │ SMTP + AUTH │ ← 認證在這裡 ├──────────────────────────────┼─────────────────────────┤ │ 6. Presentation Layer (表示層)│ Base64 編碼 │ ├──────────────────────────────┼─────────────────────────┤ │ 5. Session Layer (會話層) │ TLS (加密) │ ├──────────────────────────────┼─────────────────────────┤ │ 4. Transport Layer (傳輸層) │ TCP │ ├──────────────────────────────┼─────────────────────────┤ │ 3. Network Layer (網路層) │ IP │ ├──────────────────────────────┼─────────────────────────┤ │ 2. Data Link Layer (資料鏈結層)│ Ethernet │ ├──────────────────────────────┼─────────────────────────┤ │ 1.

Django 面試準備 09-3:緩存穿透、擊穿、雪崩

09-3. 緩存穿透、擊穿、雪崩(Cache Penetration, Breakdown, Avalanche) 📌 三大緩存問題概述 在高並發系統中,緩存是性能的關鍵。但不當使用會引發嚴重問題: 問題 原因 影響 嚴重程度 穿透 (Penetration) 查詢不存在的數據 每次都打到數據庫 ⚠️⚠️⚠️ 擊穿 (Breakdown) 熱點數據過期 瞬間大量請求打到數據庫 ⚠️⚠️⚠️⚠️ 雪崩 (Avalanche) 大量緩存同時過期 數據庫瞬間崩潰 ⚠️⚠️⚠️⚠️⚠️ 🔴 問題 1:緩存穿透(Cache Penetration) 什麼是緩存穿透(Cache Penetration)? 定義: 查詢一個不存在的數據,緩存和數據庫都沒有,導致每次請求都打到數據庫。 典型場景 # 用戶查詢 product_id = 99999(不存在) def get_product(product_id): # 1. 查緩存 → 沒有 product = cache.get(f'product:{product_id}') if product: return product # 2. 查數據庫 → 沒有 try: product = Product.objects.get(id=product_id) cache.set(f'product:{product_id}', product, 300) return product except Product.

Neural Encoder 完全解析:文字如何變成 AI 能理解的向量

Neural Encoder:AI 的「翻譯機」 想像你要跟外星人溝通,但他們只懂數學,不懂人類語言。你需要一個翻譯機,能把「我愛你」翻譯成外星人能理解的數字序列。 Neural Encoder(神經編碼器) 就是這個翻譯機: 輸入:人類語言(「Django 是網頁框架」) 輸出:數字向量([0.23, -0.45, 0.67, ...]) 關鍵:這些數字不是隨機的,而是捕捉了文字的意義 本文將帶你深入理解: Neural Encoder 如何「學會」理解語言? 為什麼不需要自己訓練就能使用? 如何選擇最適合的編碼模型? 🧬 Neural Encoder 的演進史 第一代:Word2Vec(2013) 革命性突破:詞也能做數學運算! # 著名的例子 vector("國王") - vector("男人") + vector("女人") ≈ vector("皇后") # 實際數字 [0.8, 0.2, ...] - [0.5, 0.1, ...] + [0.3, 0.9, ...] ≈ [0.6, 1.0, ...]訓練方式:上下文預測 訓練資料: "我 喜歡 吃 蘋果 和 香蕉" 訓練目標: 給定中心詞 "吃",預測上下文 ["喜歡", "蘋果"] 給定上下文 ["喜歡", "蘋果"],預測中心詞 "吃"經過數百萬句子的訓練,模型學到: 「吃」常出現在「蘋果」、「香蕉」、「飯」附近 → 這些詞的向量會彼此接近 局限性 # Word2Vec 的問題 sentence1 = "I love Python" sentence2 = "I hate Python" # Word2Vec 做法:直接平均 vector(sentence1) = (vector("I") + vector("love") + vector("Python")) / 3 vector(sentence2) = (vector("I") + vector("hate") + vector("Python")) / 3 # 問題:忽略了詞序! # "love Python" 和 "hate Python" 意思完全相反 # 但向量卻很相似(因為只是平均)第二代:BERT(2018) 突破點:理解上下文!
0%