ตัวแปรสภาพแวดล้อมและความลับ (Environment Variables and Secrets)
โค้ดของคุณต้องการ key, ฐานข้อมูล และโทเคนต่าง ๆ สิ่งเหล่านี้ ต้อง ไม่ถูก เข้ารีโพเด็ดขาด เมื่อความลับหลุดเข้าไปในประวัติ แล้ว มันก็เท่ากับเปิดเผยต่อสาธารณะตลอดไปโดยพฤตินัย — การลบบรรทัดนั้นออกใน commit ทีหลังไม่ได้ ลบ มันออกจากประวัติจริง ๆ และบอตที่คอยสแกนหารีโพสาธารณะใหม่ ๆ เพื่อหา key ที่หลุดออกมานั้นทำงานเร็วภายในไม่กี่นาที กฎสองข้อนี้จะพาคุณไปได้ไกล:
- เก็บความลับไว้ในไฟล์
.envบนเครื่องเท่านั้น และตรวจให้แน่ใจว่า.envอยู่ใน.gitignoreของคุณ - ตั้งค่าค่าเดียวกันเป็นตัวแปรสภาพแวดล้อมในแดชบอร์ดของโฮสต์คุณ (หรือผ่าน — Command-Line Interface หรือหน้าต่างพรอมป์ข้อความที่คุณพิมพ์คำสั่งแทนการคลิก) สำหรับ production
# .env (local only — never commit this)
DATABASE_URL=postgres://localhost:5432/app
STRIPE_SECRET_KEY=sk_test_xxx
SESSION_SECRET=change-me
# Set the production equivalents on the host
wrangler secret put STRIPE_SECRET_KEY
vercel env add STRIPE_SECRET_KEY production
รักษาไฟล์ .env.example ที่ commit ไว้ ซึ่งแสดงรายการ ชื่อ (ไม่ใช่ค่า) ของตัวแปรทุกตัว เพื่อให้ตัวคุณในอนาคตและ AI รู้ว่าแอปคาดหวังอะไรบ้าง สังเกตคำนำหน้า sk_test_ ด้านบน — ให้แยก key ทดสอบกับ key จริงให้แยกแยะออกจากกันชัดเจน และอย่าปล่อยให้ key จริงอยู่ใน .env บนเครื่องที่คุณอาจเผลอวางลงในแชท ถ้าคุณเคยวางความลับลงในแชท หรือ commit มันเข้าไปโดยไม่ได้ตั้งใจ ให้ถือว่ามันถูกเปิดเผยแล้วและหมุนเวียน (rotate) มันทันที: สร้าง key ใหม่ในแดชบอร์ดของผู้ให้บริการ อัปเดตทุกที่ที่ใช้มัน แล้วเพิกถอน key เก่า การหมุนเวียนใช้เวลาแค่ห้านาที แต่ URL ฐานข้อมูลที่หลุดออกไปอาจทำให้คุณเสียทุกอย่างที่อยู่ในฐานข้อมูลนั้น