~/VibeHandbook
PDF ฟรี

บท 04 · 06

API key และ auth header

ที่มีประโยชน์ส่วนใหญ่ไม่ได้เปิดให้โลกทั้งใบเข้ามาใช้ได้ฟรีๆ บริษัทต้องรู้ว่า ใคร กำลังถามอยู่ เพื่อจะได้ติดตามการใช้งานและเรียกเก็บเงินคุณ พวกเขาให้ API key แก่คุณ — ข้อความลับยาวๆ ที่ใช้ระบุบัญชีของคุณ คุณต้องแนบมันไปกับทุกคำขอ โดยปกติจะอยู่ใน header ที่ชื่อว่า Authorization เหมือนบรรทัด Bearer sk_live_... ข้างบน

จง treat API key เหมือนรหัสผ่านทุกประการ เพราะมันคือรหัสผ่านนั่นแหละ ใครก็ตามที่มีมันสามารถส่งคำขอ ในนามของคุณ ได้ — และอาจทำให้บิลของคุณพุ่งสูงหรืออ่านข้อมูลของคุณได้ เรื่องนี้เชื่อมโยงตรงกับบทเรื่องความปลอดภัย และมีกฎข้อหนึ่งที่สำคัญที่สุด:

  • ห้ามใส่ API key ในโค้ดที่ส่งไปที่เบราว์เซอร์เด็ดขาด ทุกอย่างใน ของคุณเป็นสาธารณะ — ผู้ใช้เปิด dev tools แล้วอ่านมันได้ ถ้าคุณสั่ง AI ว่า "เรียก API จากหน้าเว็บ" มันจะเอา key ของคุณไปวางตรงนั้นอย่างร่าเริงเลย หยุดมันซะ secret key ต้องอยู่บน เซิร์ฟเวอร์ เท่านั้น
  • ห้าม key ลง เด็ดขาด ถึงแม้คุณจะลบมันออกทีหลัง มันจะอยู่ในประวัติตลอดไป และบอทสแกนหา key ใน public repo ภายในไม่กี่นาที
  • เก็บ key ไว้ใน ไม่ใช่ในโค้ดโดยตรง — รูปแบบเดียวกับที่บทเรื่องความปลอดภัยพูดถึง

Key ต้องเดินทางมาจากที่ปลอดภัยเท่านั้น ไม่ใช่จากเบราว์เซอร์ ลองนึกภาพสองเส้นทาง — เส้นหนึ่งปลอดภัย อีกเส้นหนึ่งรั่วไหล:

   SAFE ✓                                  LEAK ✗
   ┌──────────┐  key   ┌──────────┐        ┌──────────┐  key  ┌──────────┐
   │  SERVER  │ ─────▶ │   API    │        │ BROWSER  │ ────▶ │   API    │
   │ (your    │ stays  │          │        │ (anyone  │       │          │
   │  backend)│ hidden │          │        │  can     │       │          │
   └──────────┘        └──────────┘        │  read it)│       └──────────┘
   key in env var                          └──────────┘
                                           key in frontend = public

ถ้าคุณเคยเห็น key จริงๆ อยู่ใน diff, ในไฟล์ frontend, หรือในข้อความแชท ให้ถือว่ามันรั่วไหลไปแล้ว: หมุนเปลี่ยน key ทันที (สร้างอันใหม่ แล้วปิดใช้งานอันเก่า)

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

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