Panduan

Apa Itu Environment Variables dan Secrets? Panduan Sederhana

Environment variable adalah pengaturan dengan nama tertentu — seperti DATABASE_URL atau STRIPE_SECRET_KEY — yang diberikan ke aplikasi Anda saat dijalankan, alih-alih ditulis langsung di dalam kode. Secret adalah environment variable yang nilainya harus tetap privat: API key, password, atau signing key. Menyimpan nilai-nilai ini di luar kode membuat Anda bisa mengubahnya tanpa mengedit aplikasi, memakai nilai yang berbeda untuk pengujian dan untuk pelanggan sungguhan, serta mencegahnya bocor saat Anda membagikan atau mempublikasikan kode.

Mengapa ini penting saat membangun dengan AI

Begitu aplikasi Anda melakukan sesuatu yang berguna dengan layanan lain — menerima pembayaran, mengirim email, memanggil model AI — aplikasi itu membutuhkan key. Pembuat aplikasi AI sering meminta key ini, dan di mana key itu akhirnya disimpan menentukan apakah aplikasi Anda aman.

Ada dua kesalahan yang sering terjadi pada aplikasi yang dibuat dengan AI:

  • Key ditempel ke dalam chat atau kode. Key itu lalu ikut tersimpan di riwayat chat, file proyek, dan setiap ekspor atau repositori. Siapa pun yang melihatnya bisa memakai akun Anda.
  • Key dipakai di browser. Jika kode yang memanggil Stripe atau OpenAI berjalan di halaman, key itu dikirim ke setiap pengunjung. Orang memang memeriksanya — dan pemindai otomatis terus-menerus mencari key yang terekspos.

Memahami environment variable membuat Anda bisa mengenali kedua masalah itu, dan meminta perbaikannya.

Analogi sehari-hari: brankas hotel

Kode aplikasi Anda seperti kamar hotel. Tamu (dan petugas kebersihan, serta siapa pun yang Anda beri kartu akses) keluar masuk. Anda tentu tidak akan meninggalkan paspor di atas meja.

Environment variable itu seperti brankas di dalam kamar. Kamar tahu bahwa ada brankas dan cara membukanya bila diperlukan, tetapi paspornya tidak tergeletak begitu saja. Dan jika Anda pindah ke kamar lain — dari pengaturan uji coba ke situs live — Anda cukup menaruh paspor yang berbeda di brankas kamar itu, tanpa mendekorasi ulang.

Cara kerjanya

Kode Anda merujuk ke sebuah nama, bukan nilainya. Di JavaScript di server, bentuknya seperti process.env.STRIPE_SECRET_KEY. Saat aplikasi mulai, platform tempat aplikasi berjalan akan mengisi nilai untuk nama tersebut. Ubah nilainya di pengaturan platform, restart atau deploy ulang, dan aplikasi memakai nilai yang baru — tanpa perubahan kode.

Dari mana nilainya berasal bergantung pada tempat aplikasi berjalan:

Tempat berjalanTempat nilai disimpan
Laptop developerBerkas lokal yang biasanya bernama .env, dan tidak boleh pernah di-commit ke git
Preview pembuat aplikasi AIPanel secrets atau pengaturan proyek
Platform hostingPengaturan environment variables di platform tersebut
GitHub Actions atau otomatisasi lainPenyimpanan secrets terenkripsi milik layanan tersebut

Variabel publik vs secret

Tidak semua environment variable itu rahasia. Akan membantu jika Anda mengelompokkannya menjadi dua jenis:

JenisContohBisakah browser melihatnya?
Konfigurasi publikNama situs, ID analytics publik, key publishable Stripe, saklar fiturYa, dan itu tidak apa-apa
SecretsKey secret Stripe, API key OpenAI atau Anthropic, connection string database, key penyedia email, signing secret webhookTidak pernah

Framework web membuat pembagian ini eksplisit. Di Vite, hanya variabel yang namanya diawali VITE_ yang disertakan dalam kode browser; di Next.js, awalannya adalah NEXT_PUBLIC_. Ini fitur keamanan: apa pun dengan awalan tersebut akan berakhir di berkas yang diunduh setiap pengunjung, sehingga secret tidak boleh pernah diberi awalan itu.

Contoh nyata: tombol ringkasan AI

Anda ingin tombol "Ringkas catatan ini" yang memanggil model AI.

Versi yang tidak aman: kode tombol, yang berjalan di browser, memanggil penyedia AI langsung dengan API key yang tertulis di dalamnya. Ini berfungsi di preview. Namun artinya siapa pun bisa membuka developer tools browser, menyalin key itu, dan menghabiskan tagihan di akun Anda.

Versi yang aman:

  1. Anda membuat key di penyedia AI dan menyimpannya sebagai secret bernama OPENAI_API_KEY (atau yang serupa) di pengaturan proyek.
  2. Backend mendapatkan route, POST /api/summarise, yang membaca process.env.OPENAI_API_KEY, memeriksa apakah pengguna sudah login, lalu memanggil penyedia.
  3. Tombol memanggil route milik Anda, bukan penyedia. Browser tidak pernah melihat key-nya.
  4. Anda menambahkan secret yang sama ke pengaturan aplikasi yang sudah dipublikasikan dan melakukan deploy ulang, sehingga situs live juga memilikinya.

Pola ini — browser memanggil server Anda, server Anda menyimpan key dan memanggil layanan — berlaku untuk pembayaran, email, peta, dan setiap API berbayar lainnya. Panduan menggunakan LLM API membahas kasus AI ini lebih mendalam.

Istilah penting

  • Berkas .env: berkas teks berisi baris NAMA=nilai yang dipakai saat development lokal. Tambahkan ke .gitignore agar tidak ikut di-commit.
  • .env.example: salinan yang hanya berisi nama tanpa nilai asli, yang di-commit agar orang lain tahu variabel mana yang harus diatur.
  • Rotate: mengganti secret dengan yang baru dan mencabut yang lama.
  • Scope / izin: banyak penyedia memungkinkan Anda membuat key yang hanya bisa melakukan hal tertentu. Key yang hanya bisa mengirim email kurang berbahaya dibanding key yang bisa melakukan segalanya.
  • Key uji vs live: penyedia seperti Stripe memberi key terpisah untuk pengujian dan untuk uang sungguhan. Pakai key uji sampai Anda meluncurkan aplikasi.
  • Signing secret: secret yang dipakai untuk memastikan sebuah pesan, misalnya webhook, benar-benar berasal dari pengirimnya.

Kesalahan dan kesalahpahaman yang umum

  • "Repositori saya privat, jadi key di dalamnya aman." Repositori privat tetap dibagikan, di-fork, diekspor, dan di-clone ke laptop. Key tetap tidak boleh ada di sana. Jika Anda menghubungkan proyek ke GitHub, pastikan tidak ada berkas .env yang ikut.
  • "Sudah saya hapus, berarti hilang." Git menyimpan riwayat, dan log chat menyimpan pesan. Jika sebuah key pernah terekspos, rotasi key tersebut.
  • Memakai awalan publik pada secret. VITE_OPENAI_KEY memasukkan key Anda ke bundle browser.
  • Lupa melakukan deploy ulang. Perubahan variabel di pengaturan biasanya baru berlaku setelah aplikasi di-restart atau dipublikasikan ulang.
  • Satu key untuk semuanya. Key terpisah untuk uji dan live, serta per aplikasi, memungkinkan Anda mencabut satu key tanpa merusak yang lain.
  • Tanpa batas pengeluaran. Untuk API berbayar, atur anggaran atau batas di dasbor penyedia jika sebuah key bocor.

Yang sebaiknya diminta ke pembuat aplikasi AI Anda

  • "Baca Stripe secret key dari environment variable bernama STRIPE_SECRET_KEY. Gunakan hanya di server."
  • "Pastikan tidak ada secret yang dipakai di kode sisi klien atau diberi awalan VITE_ / NEXT_PUBLIC_."
  • "Buat .env.example yang berisi setiap variabel yang dibutuhkan aplikasi, tanpa nilai, dan pastikan .env diabaikan oleh git."
  • "Periksa berkas frontend hasil build untuk string apa pun yang terlihat seperti API key."

Daftar periksa keamanan untuk aplikasi buatan AI kami membahas secrets bersama pemeriksaan lain yang layak dijalankan sebelum peluncuran.

Secrets di Mythex

Di Mythex, secrets adalah environment variable proyek yang disuntikkan ke sandbox preview dan aplikasi yang sudah dipublikasikan. Anda menambahkannya di pengaturan proyek → Secrets atau dengan /secrets di chat, dan saat agen membutuhkan key, agen akan menampilkan kartu secrets di chat, sehingga nilainya masuk ke kolom formulir, bukan ke transkrip pesan. Jika Anda mengubah secret untuk aplikasi live, publikasikan ulang agar deploy mengambil perubahannya. Ekspor proyek tidak menyertakan secrets, dan berkas .env yang diimpor akan dibersihkan sehingga Anda perlu menambahkannya kembali di pengaturan. Lihat environment variables dan secrets dan secrets di chat di dokumentasi.

Pertanyaan

Apa itu environment variable?

Environment variable adalah pengaturan dengan nama tertentu, seperti STRIPE_SECRET_KEY atau DATABASE_URL, yang diberikan ke program saat dijalankan, alih-alih ditulis langsung di dalam kodenya. Kode yang sama kemudian bisa memakai nilai yang berbeda di development dan production.

Apa perbedaan antara environment variable dan secret?

Secret adalah environment variable yang nilainya harus tetap privat, seperti API key, password database, atau signing secret webhook. Environment variable lain, seperti nama situs atau saklar fitur, boleh bersifat publik.

Amankah menaruh API key di frontend saya?

Tidak. Apa pun di dalam kode frontend akan diunduh ke browser setiap pengunjung dan bisa dibaca. Secret key hanya boleh dipakai di server, dan browser sebaiknya memanggil server Anda, yang kemudian memanggil penyedia layanannya.

Apa yang harus saya lakukan jika API key saya bocor?

Segera cabut atau rotasi key tersebut di penyedia layanan, buat key baru, perbarui di tempat aplikasi Anda menyimpan secrets, lalu deploy ulang. Menghapus key dari kode atau riwayat chat saja tidak cukup, karena salinannya mungkin sudah ada.

Mythex · Pricing · Bangun apa pun dengan AI · Template website dan aplikasi · Mythex dibandingkan · Glosarium membuat aplikasi dengan AI · Alat gratis untuk membuat aplikasi dengan AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)