~/VibeHandbook
PDF ฟรี

บท 18 · 07

ประตูตรวจสอบความปลอดภัย

นี่คือนิสัยเดียวที่จะเปลี่ยนทุกอย่างข้างต้นจากความกังวลให้กลายเป็นกระบวนการ: ก่อนที่คุณจะปล่อยงาน ให้ AI โจมตีโค้ดของมันเอง โมเดลที่เขียนฟีเจอร์นั้นมักจะหาช่องโหว่ในมันได้ — เพียงแต่มันจะไม่ทำ เว้นแต่คุณจะขอ พลิกบทบาทมันจากผู้สร้างเป็นศัตรู:

You wrote this endpoint. Now act as an attacker trying to break it.
List every way a malicious user could:
  - read or modify data they shouldn't (authorization holes)
  - inject code via input (SQL injection, XSS, command injection)
  - abuse missing validation or rate limits
For each, show the exact request that exploits it, then the fix.
Don't reassure me — assume there IS a vulnerability and find it.

บรรทัดสุดท้ายนั้นสำคัญมาก: ถ้าปล่อยเป็นกลาง AI มักจะบอกว่า "ดูปลอดภัยดี!" แต่เมื่อสั่งให้สมมติว่ามีข้อบกพร่องอยู่ มันก็จะไปค้นหาจริง ๆ จับคู่การตรวจสอบเชิงปฏิปักษ์นี้กับเช็กลิสต์สั้น ๆ ก่อนปล่อยงานที่คุณรันกับทุกอย่างที่ผู้ใช้ต้องเจอ:

  • ทุกเอนด์พอยต์ตรวจสอบสิทธิ์ ไม่ใช่แค่ว่าผู้ใช้ล็อกอินอยู่
  • คิวรีฐานข้อมูลทั้งหมดเป็นแบบ parameterized — ไม่มี ที่สร้างด้วยการต่อสตริง
  • ข้อมูลนำเข้าจากผู้ใช้ที่แสดงผลบนหน้าเว็บถูก escape แล้ว (ไม่มีการแทรก HTML ดิบ)
  • ไม่มีความลับในโค้ดฝั่งไคลเอนต์ และไม่มีอันไหนถูก เข้ารีโพ
  • .env อยู่ใน gitignore แล้ว และคีย์ที่เคยรั่วไหลได้ถูกหมุนใหม่แล้ว
  • การอัปโหลดไฟล์ตรวจสอบชนิดและขนาด และใช้ชื่อที่สร้างขึ้น
  • ดีเพนเดนซีใหม่ ๆ ถูกตรวจสอบด้วยตาว่ามีอยู่จริงและมีชื่อเสียงดี

ลองนึกภาพประตูนี้เป็นลำดับขั้นที่ไม่มีอะไรจะถูกปล่อยออกไปได้โดยไม่ผ่าน AI สลับหมวกจากผู้สร้างมาเป็นผู้โจมตี จากนั้นการสแกนอัตโนมัติจะคอยรองรับสิ่งที่การตรวจสอบด้วยมนุษย์อาจพลาดไป:

  feature code
       │
       ▼
 ┌──────────────────┐   "assume there IS a bug, find it"
 │ ADVERSARIAL PASS │   authz holes · injection · validation
 │ (AI as attacker) │
 └────────┬─────────┘
          │ issues found? ── yes ──▶ fix ──┐
          │ no                             │
          ▼                                │
 ┌──────────────────┐ ◀─────────────────── ┘
 │ AUTOMATED GATES  │   secret scan (gitleaks) · npm audit
 │ (CI, every push) │   parameterized? · secrets out of client?
 └────────┬─────────┘
          │ all green
          ▼
        SHIP ✓     ── anything red blocks the push ──

และรัน scanner ก่อนที่คุณจะ push — เครื่องมืออย่าง gitleaks (หรือการสแกนในตัวของแพลตฟอร์มคุณ) จะ grep โค้ดและประวัติของคุณเพื่อหาสิ่งที่มีรูปร่างเหมือนคีย์ มันคือเซฟตี้เน็ตแบบคำสั่งเดียวสำหรับความผิดพลาดที่แพงที่สุดในรายการนี้ และคุณสามารถให้ AI เชื่อมมันเข้ากับ (Continuous Integration — หุ่นยนต์ที่รันการตรวจสอบของคุณโดยอัตโนมัติทุกครั้งที่คุณ push โค้ด) เพื่อให้มันรันทุกครั้งที่ push

อยากได้แบบออฟไลน์?

ดาวน์โหลดหนังสือทั้งเล่มเป็น PDF หรือ EPUB — ฟรี