Chapter 1 — Why design matters for security
เปลี่ยนจากการไล่แก้บั๊ก มาเป็นการออกแบบโครงสร้างที่ไม่ยอมให้เกิดสถานะที่ไม่ถูกต้อง
Shallow vs. Deep Modeling, Hinge vs. Lock, กรณีศึกษา Heartbleed
สัปดาห์ที่ 1–2 · Day 1–14 · ปูรากฐานความคิด เห็นรอยแตกร้าวในโค้ด และออกแบบความปลอดภัยด้วย Secure by Design กับ Domain-Driven Design
Day 1–2 ว่าทำไมการออกแบบถึงสำคัญ และเคส Anti-Hamlet · Day 3–7 คือแนวคิด DDD, Domain Primitives และความถูกต้องของสถานะ
เป้าหมายสัปดาห์ที่ 1: เลิกมองว่า security เป็นฟีเจอร์ที่แปะทีหลัง แล้วมองว่ามันเป็นผลจากการออกแบบที่ดี พร้อมสร้างส่วนประกอบพื้นฐานของ Domain-Driven Security
เปลี่ยนจากการไล่แก้บั๊ก มาเป็นการออกแบบโครงสร้างที่ไม่ยอมให้เกิดสถานะที่ไม่ถูกต้อง
Shallow vs. Deep Modeling, Hinge vs. Lock, กรณีศึกษา Heartbleed
เคส Joe Tester ที่สั่งหนังสือ Anti-Hamlet จำนวน -1 เล่ม
Primitive Obsession, Systems living the same lie, รอยแตกร้าวจาก Shallow Modeling
ใช้ภาษาและขอบเขตทางธุรกิจใน DDD เพื่อตีกรอบความปลอดภัยของระบบ
Ubiquitous Language, Bounded Contexts, Entities vs. Value Objects, Aggregates
โครงสร้างโค้ดที่ปกป้องสถานะ และสร้างหลักประกันว่าของที่สร้างขึ้นนั้นใช้ได้
Immutability, Pure Value Objects, Contracts & Guarantees, Defensive Copying
สกัดข้อมูลเสียตั้งแต่ตอนที่ข้อมูลข้าม Bounded Context
Domain Primitives, Validation Pipeline 5 ขั้น, Fail-Fast, Read-Once Objects
รักษาความถูกต้องของข้อมูลตลอดชีวิตของ Aggregate
State Invariants, Aggregate Root Boundary, Unmodifiable Collections, Escaping References
ลดความซับซ้อนของการเปลี่ยนสถานะ เพื่อปิดช่องโหว่เชิงตรรกะ
State Machine, Entity Relay, กำจัด null และสถานะที่ไม่ถูกต้องตั้งแต่ตอนคอมไพล์
Day 8–10 คือ pipeline, การรับมือความล้มเหลว และ cloud thinking · Day 11–14 คือเคสประกันภัย, โค้ดเก่า, microservices และวัฒนธรรม antifragile
เป้าหมายสัปดาห์ที่ 2: เอาทฤษฎีสัปดาห์แรกไปใช้กับ pipeline, การจัดการความล้มเหลว, cloud thinking, โค้ดเก่า, microservices และการสร้างระบบที่แข็งขึ้นหลังถูกกระแทก
ใส่การตรวจความปลอดภัยเข้าไปใน CI/CD
Security-style unit testing 4 มิติ (Normal, Boundary, Invalid, Extreme), Static Analysis, Quality Gates
ทำให้การรับมือความผิดพลาดไม่รั่วข้อมูล และไม่ล่มตามกัน
Fail-Secure vs Fail-Open, ไม่ส่ง stack trace ออกไป, Circuit Breaker, Bulkhead, Correlation ID
ใช้แนว cloud-native และ Twelve-Factor เป็นยุทธศาสตร์ความปลอดภัย
Secrets ใน environment, Stateless processes, Centralized logging, The Three R's: Rotate, Repave, Repair
เคสประกันภัยรถยนต์ที่ยิง event ข้ามบริบทผิดความหมาย จนออกกรมธรรม์ทั้งที่เงินยังไม่เข้า
Microservices Myopia, ความหมายที่ไม่ตรงกัน, Context Mapping, Domain Events ที่พูดชัด
แทรก Domain Primitives เข้าโค้ดเก่าโดยไม่ทำให้ระบบพัง
Direct, Discovery และ New API, เลิกตรวจ null ซ้ำในชั้นลึก, Misapplied DRY
คุมความปลอดภัยและการไหลของข้อมูลในระบบที่แยกบริการ
Domain Operations กับ Anemic CRUD, การส่งต่อ identity token (JWT), CIA-T ของข้อมูลกระจาย, Domain-oriented logging
เอาการออกแบบที่ดีไปคู่กับงาน security ที่ลงมือตรวจจริง และยกทีมให้เรียนรู้จากการถูกทดสอบ
Code security reviews, OWASP dependency tracking, penetration testing กับการใช้กฎธุรกิจโจมตี, Wolff's Law และวัฒนธรรม Antifragile