ทำให้ใช้งานได้จริง
คีย์และข้อมูลลับ — ตั้งครั้งเดียว อ่านกลับไม่ได้
ทุกแอปสุดท้ายต้องถือบางอย่างที่เผยแพร่ไม่ได้ หน้านี้บอกว่ามันควรอยู่ตรงไหน ทำไมการเขียนไว้ในโค้ดถึงถูกปฏิเสธก่อนใครจะเห็น และอะไรที่แพลตฟอร์มทำให้ไม่ได้
1. ค่าธรรมดา
ตั้งแล้วแอปรีสตาร์ทพร้อมค่าเหล่านั้น ค่าถูกเก็บแบบเข้ารหัส ไม่เคยถูกเขียนลงในคำอธิบายของคอนเทนเนอร์ที่กำลังรัน และคุณดูได้ว่ามีชื่ออะไรอยู่บ้างโดยไม่เห็นค่าข้างใน
เห็นแต่ชื่อ นั่นคือค่าเริ่มต้นและตั้งใจให้เป็นแบบนั้น — รายการที่พิมพ์ค่าออกมาจะเปลี่ยนทุกการแชร์หน้าจอและทุกบันทึกเทอร์มินัลให้กลายเป็นการรั่วไหล
2. ทำไมคีย์ในโค้ดถึงไม่มีวันขึ้นออนไลน์
ก่อนการนำขึ้นออนไลน์จะเริ่ม build อะไร ระบบจะอ่านโค้ดหาข้อมูลลับที่ดูเหมือนของจริง — คีย์ AWS, service account ของ Google, คีย์ Stripe ตัวจริง, private key, รหัสผ่านที่กำหนดค่าไว้ในบรรทัดโค้ด ถ้าเจอ การนำขึ้นออนไลน์จะหยุด
หยุด ไม่ใช่แค่เตือน เพราะนี่คือความผิดพลาดชนิดเดียวที่ราคาไปตกกับคนอื่น — คีย์ที่รั่วถูกคนแปลกหน้าใช้แล้วเรียกเก็บกับบัญชีคุณ และเมื่อมันอยู่ใน repository สาธารณะหรือในไฟล์เว็บที่ build แล้ว มันหายไปแล้ว คำเตือนที่เลื่อนผ่านได้ไม่ใช่การป้องกัน
สองอย่างที่ระบบตั้งใจไม่ทำ: ไม่สแกนไฟล์เอกสารและไฟล์ตัวอย่าง — password="test" ในไฟล์ทดสอบคือสิ่งที่ถูกต้อง และประตูที่ปฏิเสธทุกโปรเจกต์จริงคือประตูที่คนเรียนรู้ที่จะเมิน และค่าที่อ่านแล้วเป็นตัวอย่าง — มีคำว่า your, example, changeme, เป็นชื่อตัวพิมพ์ใหญ่ล้วน หรือเป็น slug พิมพ์เล็กคั่นขีด — จะไม่ถูกนับเป็นข้อมูลลับ
คำสั่งนี้รันประตูเดียวกันโดยไม่นำขึ้นออนไลน์ เป็นทางเร็วที่สุดที่จะรู้ก่อนส่งโค้ด
3. เมื่อมันต้องอ่านไม่ได้เลย
secret คือค่าที่เขียนได้อย่างเดียว: พิมพ์ผ่านช่องที่ไม่แสดงตัวอักษร เก็บไว้ แล้วไม่มีอะไรคืนค่านั้นออกมาอีก — ไม่ใช่ CLI ไม่ใช่ API ไม่ใช่เอไอของคุณ environment variable ยังดูรายชื่อและเขียนทับได้ ส่วน secret อ่านกลับไม่ได้เลย ทำได้แค่หมุนเปลี่ยนหรือลบ
ใช้กับค่าที่การอ่านได้คือความเสี่ยงในตัวมันเอง — คีย์รับชำระเงิน คีย์เซ็นข้อมูล token ที่ใช้เงินได้ ค่าที่เหลือใช้ตัวแปรธรรมดา เพราะค่าที่ไม่มีใครอ่านกลับได้ ก็คือค่าที่คุณตรวจสอบไม่ได้ตอนมีอะไรผิดปกติ
สิ่งที่ยังเป็นหน้าที่คุณ
หมุนเปลี่ยนคีย์ที่ผู้ให้บริการเมื่อมีคนออกจากทีม ตัดสินใจว่าผู้ใช้ของแอปคุณคนไหนเห็นอะไรได้ และอะไรก็ตามที่คีย์ทำได้เมื่อโค้ดของคุณถือมันแล้ว — แพลตฟอร์มถือค่านั้นไว้ได้ แต่ถือเจตนาของคุณแทนไม่ได้