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

เว็บเพิ่งทำเสร็จเมื่อวาน แต่พอเปิดดูวันนี้ โควตาของบริการภายนอกที่เชื่อมผ่าน API กลับหมดเกลี้ยง หรือมีบิลเรียกเก็บเงินโผล่มา ทั้ง ๆ ที่แทบไม่มีใครเข้ามาใช้งานเว็บ
พอเปิดโค้ดไล่ดูก็ไม่เจออะไรผิดปกติ เพราะโปรแกรมรันผ่านและทำงานได้ตามสั่งทุกอย่าง ปัญหาไม่ได้อยู่ที่โค้ดทำงานผิดพลาด แต่อยู่ที่ API key ที่เป็นรหัสผ่านสำหรับเชื่อมต่อบริการต่าง ๆ ผ่านบัญชีของคุณ ไม่ได้อยู่แค่ในเครื่องของคุณแล้ว
ย้อนกลับไปตอนที่คุณบอก AI ว่า "ต่อ API ตัวนี้ให้หน่อย" มันก็ทำให้ตรงตามสั่งเป๊ะ โดยวาง API key ลงไปในไฟล์โค้ดตรง ๆ เพื่อให้โปรแกรมหยิบไปใช้ได้ทันที กดรันแล้วผ่าน สำหรับ AI แล้ว ทุกอย่างดูถูกต้องสมบูรณ์แบบ สิ่งเดียวที่มันไม่รู้คือ ไฟล์นั้นกำลังจะเดินทางต่อ ไม่ว่าจะขึ้นเว็บเก็บโค้ดอย่าง GitHub หรืออัปขึ้นเซิร์ฟเวอร์ของเว็บจริง
API key ของคุณก็เลยติดไปด้วยทั้งยวง
คำถามที่ควรเช็กให้แน่ใจตั้งแต่วันนี้มีข้อเดียวคือ ตอนนี้ API key ของคุณอยู่ในไฟล์โค้ดตรง ๆ หรือเปล่า
API key กับโค้ดไม่ใช่ของประเภทเดียวกัน

โค้ดมีไว้ส่งต่อ จะกด push ขึ้นระบบออนไลน์ กด deploy ไปทำงานบนเซิร์ฟเวอร์ หรือซิปทั้งโฟลเดอร์ส่งให้เพื่อนช่วยดู ทุกทางล้วนพาไฟล์ออกจากเครื่องคุณไปที่อื่น
ส่วนความลับอย่าง API key เกิดมาเพื่ออยู่กับที่ มันทำหน้าที่ได้ก็เพราะไม่มีใครนอกจากคุณเข้าถึงได้
พอของสองประเภทนี้มาอยู่ในไฟล์เดียวกัน ความลับก็ต้องไปตามไฟล์โค้ด เพราะเวลาส่งไฟล์ เราไม่ได้เลือกส่งเป็นรายบรรทัดว่าอันไหนคือโค้ด อันไหนคือคีย์ ไฟล์ไปถึงไหน ทุกบรรทัดข้างในก็ไปถึงที่เดียวกัน
เปรียบเหมือนการเอากุญแจบ้านไปแปะเทปไว้หลังนามบัตรแล้วเดินแจกในงานสัมมนา นามบัตรมีไว้แจกคนอื่น ส่วนกุญแจควรอยู่ในกระเป๋า แต่พอมันติดอยู่ด้วยกัน นามบัตรไปถึงมือใคร กุญแจก็ตกไปอยู่ในมือคนนั้นทันที
จุดที่พลาดง่ายคือ ไฟล์ที่มีคีย์ฝังอยู่มักเป็นไฟล์หลักที่โปรเจกต์ต้องใช้รันเพื่อให้เว็บทำงานได้ มันไม่ใช่ไฟล์แปลกปลอมที่คุณเผลอลากติดไป แต่เป็นไฟล์งานที่คุณตั้งใจอัปขึ้นเว็บจริง
AI มองไม่เห็นว่าไฟล์นี้กำลังจะไปไหนต่อ
AI มองเห็นแค่โค้ดในหน้าต่างแชทเท่านั้น ส่วนงานที่คุณสั่งก็จบตรงที่โค้ดชุดนั้นทำงานได้
แต่สิ่งที่ AI มองไม่เห็นเลยคือ "ชีวิตของไฟล์โค้ด" หลังจากที่คุณปิดหน้าต่างแชทไปแล้ว คุณจะ push โค้ดขึ้นไปที่ไหน จะกด deploy ขึ้นเว็บจริงเมื่อไหร่ หรือจะแคปหน้าจอโค้ดไปโพสต์ถามในกลุ่มออนไลน์ไหม เส้นทางเหล่านี้เป็นเรื่องที่ AI ไม่มีทางรู้ได้เลย
มันจึงไม่เตือนคุณ ไม่ใช่เพราะจงใจละเลย แต่เพราะงานที่คุณสั่งคือ "ช่วยต่อ API ให้หน่อย" และมันก็ทำเสร็จตามนั้นแล้ว งานนี้จบเมื่อ "โค้ดรันผ่าน" ไม่ใช่เมื่อ "ปลอดภัยตอนเอาไปใช้จริง"
ผลเสียจากการมองข้ามเรื่องนี้ไม่ได้เกิดขึ้นตอนเขียนโค้ด แต่จะตามมาตอนที่ไฟล์เดินทางออกไปแล้ว และถึงตอนนั้น การกลับมาแก้ไฟล์ในเครื่องตัวเองก็ไม่ได้ทำให้สิ่งที่ออกไปแล้วหายไปด้วย
สั่งให้ AI ย้ายคีย์ไป environment variable ตั้งแต่ประโยคแรก
environment variable คือการแยกค่าความลับไปเก็บไว้นอกไฟล์โค้ด แล้วให้โค้ดเรียกใช้ค่านั้นตอนรันโปรแกรม ในไฟล์โค้ดเหลือแค่ชื่อตัวแปร ส่วนคีย์จริงเก็บไว้อีกที่หนึ่ง แยกจากไฟล์ที่คุณจะส่งต่อ
เวลาทำงานบนเครื่องตัวเอง ค่าพวกนี้มักอยู่ในไฟล์ชื่อ .env เป็นไฟล์ที่เรากันไว้ไม่ให้อัปขึ้นไปพร้อมโค้ด ส่วนตอนเอาเว็บขึ้นจริง ก็ไปกรอกค่าพวกนี้ไว้ที่หน้าตั้งค่าของที่ฝากเว็บหรือโฮสติ้ง แยกจากไฟล์งาน
ประโยคคำสั่งที่ก๊อปปี้ไปวางในแชทคุยกับ AI ได้ทันที:
ย้าย API key ทุกตัวในโปรเจกต์นี้ออกจากไฟล์โค้ด ไปเก็บเป็น environment variable
สร้างไฟล์ .env.example ที่มีแต่ชื่อค่า ไม่ต้องใส่ค่าจริง
เพิ่ม .env เข้าไปใน .gitignore ให้ด้วย
แล้วบอกมาว่าต้องไปตั้งค่าอะไรบ้างบนที่ฝากเว็บ
ไฟล์ .env.example ในบรรทัดที่สอง คือไฟล์แม่แบบที่มีเฉพาะชื่อตัวแปรเปล่า ๆ เพื่อเอาไว้บอกคนอื่นหรือตัวคุณเองในอนาคตว่าโปรเจกต์นี้ต้องใช้คีย์อะไรบ้าง โดยไม่มีคีย์จริงติดไปด้วย ส่วนบรรทัดที่สาม คือบอก AI ให้เอาชื่อ .env ไปจดไว้ในรายชื่อไฟล์ที่เราไม่ต้องการส่งขึ้นไปพร้อมโค้ด ซึ่งก็คือไฟล์ .gitignore นั่นเอง
ส่วนบรรทัดสุดท้ายมีไว้ให้ AI สรุปกลับมาว่า ตอนเอาโปรเจกต์ขึ้นเว็บจริง คุณต้องเอาคีย์ตัวไหนไปกรอกไว้ที่หน้าตั้งค่าของที่ฝากเว็บบ้าง ไม่อย่างนั้นเว็บที่ขึ้นไปก็หาคีย์ไม่เจอ ถ้าคำศัพท์เหล่านี้ยังฟังดูใหม่สำหรับคุณ ลองอ่านเพิ่มเติมได้ที่ คำ programming ที่ vibe coder ควรรู้ก่อนของพัง
สิ่งที่คุณเลือกเองได้คือจะสั่งประโยคนี้ตอนไหน ทางที่ตรงไปตรงมาที่สุดคือสั่งตั้งแต่ก่อนให้ AI ต่อ API ครั้งแรก เพราะเป็นการแยกความลับออกจากโค้ดตั้งแต่ต้นทาง ส่วนการรอมาย้ายตอนที่โปรเจกต์เดินไปไกลแล้ว แม้จะยังย้ายได้ แต่คุณต้องมานั่งไล่ย้อนหลังเพิ่มด้วยว่า ไฟล์ที่มีคีย์หลุดออกไปอยู่ที่ไหนบ้างแล้ว
สามจุดที่ต้องเปิดดูด้วยตาก่อนกดขึ้นจริง

คำตอบของ AI ที่บอกว่า "ย้ายให้เรียบร้อยแล้ว" อาจไม่ตรงกับสิ่งที่เกิดขึ้นจริงเสมอไป นี่คือ 3 จุดที่ควรเปิดดูด้วยตาตัวเองก่อนกดอัปโหลดโค้ดขึ้นจริง
- ค้นหาคำว่า key, token, secret ทั่วทั้งโปรเจกต์: ถ้ายังเจอข้อความรหัสยาว ๆ ตามหลังคำพวกนี้ แปลว่าคีย์ยังอยู่ในไฟล์โค้ด และยิ่งสั่ง AI แก้โค้ดมาหลายรอบ คีย์ก็ยิ่งมีโอกาสไปโผล่อยู่หลายจุด
- เปิดไฟล์
.gitignoreดูด้วยตาตัวเอง: ดูว่ามีชื่อ.envอยู่ในรายชื่อนั้นจริงไหม ถ้าคุณกำลังจะ push โค้ดขึ้นระบบออนไลน์ครั้งแรก นี่คือจุดที่ควรเปิดดูก่อนเสมอ เพราะมันคือรายชื่อไฟล์ที่คุณบอกไว้ว่าไม่ต้องส่งขึ้นไปด้วย - ดูว่าโค้ดที่เรียกใช้ API ทำงานอยู่ฝั่งไหน: ถ้าโค้ดส่วนที่หยิบคีย์ไปใช้ทำงานอยู่บนเบราว์เซอร์ของคนที่เข้าเว็บหรือฝั่ง frontend ต่อให้ย้ายคีย์ไปไว้ใน environment variable แล้ว ตอนระบบ build ไฟล์ออกมาส่งให้เบราว์เซอร์ ค่าคีย์ก็ยังอาจไปฝังอยู่ในไฟล์ชุดนั้นได้อยู่ดี
จุดที่สามคือจุดที่ดูเผิน ๆ เหมือนเรียบร้อยแล้วแต่ยังไม่รอด วิธีดูคือเปิดหน้าเว็บของคุณเองขึ้นมา แล้วเปิดเครื่องมือนักพัฒนาอย่าง Developer Tools บนเบราว์เซอร์ ค้นหาคำว่า key ในนั้น ถ้า API key ของคุณโผล่มาให้เห็น คนที่เข้าเว็บของคุณก็เห็นคีย์ตัวเดียวกัน
ทางแก้ไม่ใช่การหาที่ซ่อนคีย์ให้เนียนขึ้นในฝั่งหน้าเว็บ แต่เป็นการย้ายโค้ดส่วนที่เรียกใช้ API ไปทำงานฝั่งเซิร์ฟเวอร์หลังบ้านหรือ backend แล้วให้หน้าเว็บคุยกับเซิร์ฟเวอร์ของเราแทน คีย์จะได้ไม่ต้องเดินทางไปถึงเบราว์เซอร์ของคนอื่นตั้งแต่แรก
AI ช่วยแยกไฟล์ได้ แต่ไม่รู้ว่าอะไรคือความลับ
AI ช่วยแยกไฟล์และย้ายโค้ดแทนได้ แค่คุณชี้ว่าตัวไหนคือคีย์ มันก็ย้ายค่านั้นออกจากไฟล์โค้ด แก้ส่วนที่เรียกใช้ แล้วเขียนไฟล์ตัวอย่างไว้ให้
แต่คำถามที่ว่า "ค่าไหนคือความลับ" ไม่มีใครตอบแทนคุณได้ ทั้ง API key ที่คิดเงินตามการใช้งาน token สำหรับเข้าถึงข้อมูลลูกค้า หรือลิงก์ที่ใครถือก็เข้าระบบได้ ของพวกนี้หลายตัวหน้าตาไม่ต่างจากข้อความธรรมดาเลย
ยิ่งไปกว่านั้น ค่าบางอย่างอาจเป็นข้อมูลสาธารณะในบริการหนึ่ง แต่กลับเป็นความลับสำคัญในอีกบริการหนึ่ง คนเดียวที่รู้ว่าคีย์ตัวนี้ทำอะไรได้บ้าง หรือจะสร้างความเสียหายทางการเงินได้มากแค่ไหน ก็คือตัวคุณเอง
หน้าที่ขีดเส้นแบ่งความปลอดภัยจึงยังอยู่ที่ตัวคุณเสมอ ไม่ว่า AI จะฉลาดขึ้นแค่ไหนก็ตาม นี่เป็นหัวใจสำคัญเรื่องเดียวกับที่เราเคยชวนคุยไว้ใน ถ้า AI เขียนโค้ดได้หมดแล้ว เหลืออะไรให้คนฝึก
หลุดแล้วหลุดเลย
ถ้า API key หลุดออกไปสู่สาธารณะแล้ว ให้ถือว่าหลุดถาวรทันที ไม่มีปุ่มย้อนเวลาที่จะเรียกความลับนั้นกลับคืนมาได้ เพราะระหว่างที่มันเปิดโล่งอยู่ เราไม่มีทางรู้เลยว่ามีใครก๊อปปี้คีย์นั้นเก็บไว้แล้วบ้าง
สิ่งเดียวที่ต้องทำทันทีคือ เข้าไปยังหน้าตั้งค่าของบริการนั้น ๆ เพื่อกดสร้างคีย์ใหม่ แล้วกดยกเลิกหรือลบคีย์เดิมทิ้ง เพื่อให้คีย์ที่หลุดไปกลายเป็นแค่ตัวอักษรเปล่า ๆ ที่นำไปใช้งานหรือสร้างค่าใช้จ่ายไม่ได้อีกต่อไป
การลบ API key ออกจากไฟล์โค้ดตอนนี้ คือการเก็บของฝั่งคุณให้เรียบร้อย ไม่ใช่การดึงสิ่งที่หลุดออกไปแล้วกลับคืนมา
ทุกครั้งที่ส่งไฟล์โค้ดออกไป ทุกอย่างที่อยู่ข้างในก็ติดไปด้วย ส่วนก่อนส่งคือช่วงเวลาเดียวที่คุณยังเลือกได้ว่าจะให้อะไรติดไปกับไฟล์บ้าง
ชอบเรื่องแนวนี้ มีอีบุ๊คฟรีให้อ่านต่อ
NotebookLM ฉบับเข้าใจง่าย โยนเอกสารให้ AI อ่าน แล้วได้สรุป พอดแคสต์ และคลังความรู้ส่วนตัว
กดสมัครแล้วเราจะส่งเทคนิค AI และของแจกใหม่ๆ ให้ทางอีเมล เลิกรับได้ตลอด
Claude Cowork · The Business Playbook

ฉบับภาษาไทย 15 บท เรียนรู้ผ่านโปรเจกต์จำลองต่อเนื่องทั้งเล่ม ตั้งแต่ตั้งค่า Workspace จัดการไฟล์ เชื่อมแอป ตั้งระบบอัตโนมัติ จนถึงสร้าง Plugin


