Ano ang Environment Variables at Secrets? Isang Simpleng Gabay
Ang environment variable ay isang pinangalanang setting, gaya ng DATABASE_URL o STRIPE_SECRET_KEY, na ibinibigay sa app mo kapag tumatakbo ito, sa halip na isulat sa code. Ang secret naman ay environment variable na kailangang manatiling pribado ang halaga: isang API key, password, o signing key. Kapag nasa labas ng code ang mga halagang ito, puwede mo silang palitan nang hindi ginagalaw ang app, gumamit ng magkaibang halaga para sa testing at para sa totoong customer, at hindi sila mai-leak kapag ibinahagi o na-publish mo ang code.
Bakit mahalaga ito kapag gumagawa ka gamit ang AI
Sa sandaling gumawa ang app mo ng kapaki-pakinabang na bagay gamit ang ibang serbisyo, gaya ng pagtanggap ng bayad, pagpapadala ng email, o pagtawag sa AI model, kakailanganin nito ng key. Madalas humingi ng ganitong keys ang mga AI app builder, at ang kung saan mapupunta ang key ang magdedetermina kung ligtas ang app mo.
Dalawang bagay ang madalas magkamali sa mga app na gawa ng AI:
- Naipaste ang key sa chat o sa code. Mananatili ito sa chat history, sa mga project file, at sa anumang export o repository. Sinumang makakita nito ay puwedeng gumamit ng account mo.
- Ginagamit ang key sa browser. Kapag ang code na tumatawag sa Stripe o OpenAI ay tumatakbo sa page, ipinapadala ang key sa bawat bisita. Tumitingin talaga ang mga tao, at palagi ring nag-i-scan ang mga automated tool para sa mga nakalantad na key.
Kapag naiintindihan mo ang environment variables, makikita mo ang dalawang problemang ito at mahihingi mo ang tamang ayos.
Isang halimbawa mula sa araw-araw: ang hotel safe
Parang kuwarto ng hotel ang code ng app mo. Dumadaan dito ang mga bisita, ang mga tagalinis, at sinumang binigyan mo ng key card. Hindi mo iiwan ang passport mo sa ibabaw ng mesa.
Ang environment variables ang safe sa loob ng kuwarto. Alam ng kuwarto na may safe at kung paano ito bubuksan kapag kailangan, pero hindi nakalatag kung saan-saan ang passport. At kapag lumipat ka sa ibang kuwarto, mula sa test setup patungo sa live site mo, maglalagay ka ng ibang passport sa safe ng kuwartong iyon nang hindi binabago ang buong kuwarto.
Paano ito gumagana
Pangalan ang tinutukoy ng code mo, hindi ang mismong halaga. Sa JavaScript sa server, ganito ang itsura: process.env.STRIPE_SECRET_KEY. Pagsisimula ng app, pupunuan ng platform na pinapatakbuhan nito ang halaga para sa pangalang iyon. Palitan mo ang halaga sa settings ng platform, i-restart o i-redeploy, at gagamitin na ng app ang bago. Walang kailangang baguhin sa code.
Nakadepende kung saan galing ang mga halaga sa kung saan tumatakbo ang app:
| Saan tumatakbo | Saan iniimbak ang mga halaga |
|---|---|
| Sa laptop ng developer | Isang lokal na file, kadalasang tinatawag na .env, na hindi dapat kailanman i-commit sa git |
| Sa preview ng AI builder | Ang secrets o settings panel ng project |
| Sa hosting platform | Ang environment variables settings ng platform na iyon |
| Sa GitHub Actions o iba pang automation | Ang sariling encrypted secrets store ng serbisyo |
Pampubliko vs. secret na variable
Hindi lahat ng environment variable ay secret. Makakatulong na paghiwalayin ang mga ito sa dalawang grupo:
| Uri | Mga halimbawa | Nakikita ba ito ng browser? |
|---|---|---|
| Pampublikong configuration | Pangalan ng site, public analytics ID, Stripe publishable key, feature switch | Oo, ayos lang iyon |
| Secrets | Stripe secret key, OpenAI o Anthropic API key, database connection string, email provider key, webhook signing secret | Hindi, kailanman |
Malinaw na ginagawa ito ng mga web framework. Sa Vite, tanging mga variable na nagsisimula sa VITE_ ang isinasama sa browser code; sa Next.js naman, ang prefix ay NEXT_PUBLIC_. Isa itong safety feature: ang anumang may ganoong prefix ay napupunta sa mga file na dina-download ng bawat bisita, kaya hindi dapat bigyan ng ganoong prefix ang secret.
Halimbawang gawa: isang AI summary button
Gusto mo ng button na "Summarise this note" na tumatawag sa AI model.
Ang hindi ligtas na bersyon: ang code ng button, tumatakbo sa browser, ay direktang tumatawag sa AI provider na may API key na nakasulat dito. Gumagana ito sa preview. Pero ibig sabihin nito, sinumang magbukas ng developer tools ng browser ay makakakopya ng key at makakapagpatakbo ng gastos sa account mo.
Ang ligtas na bersyon:
- Gumawa ka ng key sa AI provider at iimbak ito bilang secret na may pangalang
OPENAI_API_KEY(o katulad nito) sa settings ng project mo. - Ang backend ay may route,
POST /api/summarise, na bumabasa ngprocess.env.OPENAI_API_KEY, tumitingin na naka-log in ang user, at tumatawag sa provider. - Ang button ay tumatawag sa iyong route, hindi sa provider. Hindi kailanman nakikita ng browser ang key.
- Idinadagdag mo ang parehong secret sa settings ng na-publish na app at nire-redeploy, para mayroon din ang live site.
Ang pattern na iyon, kung saan tumatawag ang browser sa server mo at hawak ng server ang key at tumatawag sa serbisyo, ay ginagamit para sa bayad, email, mapa, at bawat iba pang bayad na API. Sakop ng gabay sa paggamit ng LLM APIs ang kaso ng AI nang mas malalim.
Mahahalagang termino
.envfile: isang text file na may mga linyangNAME=value, ginagamit sa lokal na development. Ilagay ito sa.gitignorepara hindi ma-commit..env.example: kopya na may mga pangalan pero walang totoong halaga. Ina-commit ito para malaman ng iba kung aling variable ang itatakda.- Rotate: palitan ang secret ng bago at i-revoke ang luma.
- Scope / permissions: maraming provider ang nagpapahintulot na gumawa ng keys na para lang sa ilang gawain. Mas kaunti ang panganib ng key na pang-email lang kaysa sa key na puwedeng gumawa ng lahat.
- Test vs live keys: nagbibigay ang mga provider gaya ng Stripe ng hiwalay na key para sa testing at para sa totoong pera. Gamitin ang test keys hanggang sa ilunsad mo ang app.
- Signing secret: secret na ginagamit para matiyak na ang mensahe, gaya ng webhook, ay galing talaga sa nagpadala.
Mga karaniwang pagkakamali at maling akala
- "Private ang repository ko, kaya ayos lang na may keys doon." Naibabahagi, nafo-fork, naie-export, at nakokopya sa mga laptop ang mga private repository. Hindi pa rin dapat nandoon ang keys. Kung ikinonekta mo ang project sa GitHub, siguraduhing walang kasamang
.envfile. - "Binura ko na, kaya wala na." Itinatago ng Git ang history, at nagtatago ng mensahe ang chat logs. Kapag nalantad na ang key kahit minsan, palitan (rotate) ito.
- Paglalagay ng public prefix sa secret. Ang
VITE_OPENAI_KEYay naglalagay ng key mo sa browser bundle. - Pagkalimot mag-redeploy. Kadalasan, magkakabisa lang ang pagbabago sa variable pagkatapos mag-restart o mai-publish muli ang app.
- Iisang key para sa lahat. Ang hiwalay na key para sa test at live, at para sa bawat app, ay nagbibigay-daan na i-revoke ang isa nang hindi nasisira ang iba.
- Walang limitasyon sa gastos. Para sa bayad na API, magtakda ng budget o limit sa dashboard ng provider kung sakaling ma-leak ang key.
Ano ang hihingin mo sa AI builder mo
- "Basahin ang Stripe secret key mula sa environment variable na tinatawag na
STRIPE_SECRET_KEY. Gamitin lang ito sa server." - "Siguraduhing walang secret na ginagamit sa client-side code o binibigyan ng prefix na
VITE_/NEXT_PUBLIC_." - "Gumawa ng
.env.examplena naglilista ng bawat variable na kailangan ng app, nang walang halaga, at siguraduhing naka-git-ignore ang.env." - "Suriin ang mga na-build na frontend file para sa anumang string na mukhang API key."
Sakop ng security checklist para sa mga app na gawa ng AI ang secrets kasama ng iba pang tseke na sulit gawin bago ilunsad.
Secrets sa Mythex
Sa Mythex, ang secrets ay mga environment variable ng project na itinuturok sa parehong preview sandbox at sa na-publish mong app. Idinadagdag mo ang mga ito sa ilalim ng project settings → Secrets o gamit ang /secrets sa chat. Kapag kailangan ng agent ang key, magpapakita ito ng secrets card sa chat, kaya napupunta ang halaga sa form field at hindi sa transcript ng mensahe. Kapag binago mo ang secret ng live na app, mag-publish ulit para makuha ng deploy ang bago. Hindi kasama ang secrets sa project exports, at tinatanggal ang mga na-import na .env file para muli mo silang idagdag sa settings. Tingnan ang environment variables at secrets at secrets sa chat sa docs.
Mga tanong
Ano ang environment variable?
Ang environment variable ay isang pinangalanang setting, gaya ng STRIPE_SECRET_KEY o DATABASE_URL, na ibinibigay sa programa kapag tumatakbo ito, sa halip na isulat sa mismong code. Kaya puwedeng gamitin ng iisang code ang magkaibang halaga sa development at sa production.
Ano ang pagkakaiba ng environment variable at secret?
Ang secret ay isang environment variable na kailangang manatiling pribado ang halaga, gaya ng API key, database password o webhook signing secret. Ang ibang environment variable, gaya ng pangalan ng site o feature switch, ay puwedeng pampubliko.
Ligtas bang ilagay ang API keys sa frontend ko?
Hindi. Lahat ng nasa frontend code ay dina-download sa browser ng bawat bisita at puwedeng basahin. Sa server lang dapat gamitin ang secret keys, at ang browser ay dapat tumawag sa server mo, na siya namang tatawag sa provider.
Ano ang dapat kong gawin kapag na-leak ang API key ko?
I-revoke o palitan agad ito sa provider, gumawa ng bago, i-update ito sa lahat ng lugar kung saan iniimbak ng app mo ang secrets, at i-redeploy. Hindi sapat na burahin lang ang key sa code o sa chat history, dahil maaaring may kopya na.