Vodiči

Šta su promenljive okruženja i tajne? Jednostavan vodič

Promenljiva okruženja je imenovano podešavanje — poput DATABASE_URL ili STRIPE_SECRET_KEY — koje se aplikaciji prosleđuje kada se pokrene, umesto da bude upisano u kod. Tajna je promenljiva okruženja čija vrednost mora ostati privatna: API ključ, lozinka ili ključ za potpisivanje. Kada ove vrednosti držite van koda, možete ih menjati bez menjanja aplikacije, koristiti različite za testiranje i za prave korisnike i sprečiti da procure kada delite ili objavljujete kod.

Zašto je važno kada pravite nešto uz AI

Čim vaša aplikacija uradi nešto korisno sa drugim servisom — naplati plaćanje, pošalje e-poštu, pozove AI model — treba joj ključ. AI graditelji redovno traže te ključeve, a to gde ključ završi određuje da li je vaša aplikacija bezbedna.

Dve stvari se često pogrešno urade kod aplikacija napravljenih uz AI:

  • Ključ se nalepi u chat ili kod. Tada živi u istoriji chata, u fajlovima projekta i u svakom izvozu ili repozitorijumu. Ko god ga vidi, može da koristi vaš nalog.
  • Ključ se koristi u pregledaču. Ako kod koji poziva Stripe ili OpenAI radi u stranici, ključ se šalje svakom posetiocu. Ljudi to zaista gledaju, a automatski skeneri stalno traže izložene ključeve.

Razumevanje promenljivih okruženja omogućava vam da prepoznate oba problema i zatražite ispravku.

Svakodnevna analogija: hotelski sef

Kod vaše aplikacije je kao hotelska soba. Gosti (i spremačice, i svi kojima date karticu za vrata) prolaze kroz nju. Ne biste ostavili pasoš na stolu.

Promenljive okruženja su sef u sobi. Soba zna da postoji sef i kako da ga otvori kada treba, ali pasoš ne leži naokolo. A ako pređete iz jedne sobe u drugu — s vašeg testnog okruženja na živ sajt — u sef te sobe stavljate drugi pasoš, bez preuređivanja sobe.

Kako radi

Vaš kod se poziva na ime, a ne na vrednost. U JavaScriptu na serveru to izgleda kao process.env.STRIPE_SECRET_KEY. Kada se aplikacija pokrene, platforma na kojoj radi popunjava vrednost za to ime. Promenite vrednost u podešavanjima platforme, ponovo pokrenite ili ponovo postavite aplikaciju, i ona koristi novu — bez menjanja koda.

Odakle vrednosti dolaze zavisi od toga gde aplikacija radi:

Gde radiGde se vrednosti čuvaju
Na računaru programeraLokalni fajl obično nazvan .env, koji nikada ne sme biti commit-ovan u git
U pregledu AI graditeljaPanel za tajne ili podešavanja projekta
Na platformi za hostingPodešavanja promenljivih okruženja te platforme
U GitHub Actions ili drugoj automatizacijiŠifrovano skladište tajni same usluge

Javne i tajne promenljive

Nisu sve promenljive okruženja tajne. Korisno ih je podeliti u dve grupe:

VrstaPrimeriMože li pregledač da je vidi?
Javna konfiguracijaNaziv sajta, javni ID za analitiku, Stripe javni ključ, prekidači funkcijaDa, to je u redu
TajneStripe tajni ključ, OpenAI ili Anthropic API ključ, string za povezivanje sa bazom, ključ provajdera e-pošte, tajni ključ za potpisivanje webhook-aNikada

Veb okviri to razdvajanje čine eksplicitnim. U Vite-u se u kod pregledača uključuju samo promenljive čiji naziv počinje sa VITE_; u Next.js-u prefiks je NEXT_PUBLIC_. To je bezbednosna odlika: sve sa tim prefiksima završava u fajlovima koje svaki posetilac preuzima, pa tajna nikada ne sme dobiti jedan od njih.

Primer: dugme za AI sažetak

Želite dugme „Sažmi ovu belešku“ koje poziva AI model.

Nebezbedna verzija: kod dugmeta, koji se izvršava u pregledaču, poziva AI provajdera direktno, sa API ključem upisanim u kod. Radi u pregledu. Ali to znači da svako može da otvori alate za razvojne programere u pregledaču, kopira ključ i napravi račun na vaš teret.

Bezbedna verzija:

  1. Ključ napravite kod AI provajdera i sačuvate ga kao tajnu pod imenom OPENAI_API_KEY (ili slično) u podešavanjima projekta.
  2. Backend dobija rutu, POST /api/summarise, koja čita process.env.OPENAI_API_KEY, proverava da je korisnik prijavljen i poziva provajdera.
  3. Dugme poziva vašu rutu, a ne provajdera. Pregledač nikada ne vidi ključ.
  4. Istu tajnu dodajete u podešavanja objavljene aplikacije i ponovo je postavljate, pa i živ sajt ima ključ.

Taj obrazac — pregledač poziva vaš server, a vaš server čuva ključ i poziva servis — važi za plaćanja, e-poštu, mape i svaki drugi plaćeni API. Vodič za korišćenje LLM API-ja detaljnije pokriva AI slučaj.

Ključni pojmovi

  • .env fajl: tekstualni fajl sa redovima NAZIV=vrednost koji se koristi u lokalnom razvoju. Upišite ga u .gitignore da ne bi bio commit-ovan.
  • .env.example: kopija sa nazivima ali bez stvarnih vrednosti, koja se commit-uje da drugi znaju koje promenljive treba da podese.
  • Rotacija: zamena tajne novom i opozivanje stare.
  • Opseg / dozvole: mnogi provajderi dozvoljavaju ključeve koji mogu samo određene stvari. Ključ koji samo šalje e-poštu manje je opasan od onog koji sme sve.
  • Test i live ključevi: provajderi poput Stripe-a daju odvojene ključeve za testiranje i za pravi novac. Koristite test ključeve dok ne krenete.
  • Tajna za potpisivanje: tajna koja se koristi da se proveri da je poruka, poput webhook-a, stvarno došla od pošiljaoca.

Česte greške i zablude

  • „Repozitorijum je privatan, pa su ključevi u njemu u redu.“ Privatni repozitorijumi se dele, forkuju, izvoze i kloniraju na laptopove. Ključevi tamo ne pripadaju. Ako povežete projekat sa GitHub-om, proverite da nijedan .env fajl nije uključen.
  • „Obrisao sam ga, znači nestao je.“ Git čuva istoriju, a logovi chata čuvaju poruke. Ako je ključ ikada procurio, opozovite ga.
  • Stavljanje javnog prefiksa na tajnu. VITE_OPENAI_KEY stavlja vaš ključ u paket koji se šalje pregledaču.
  • Zaboravljanje ponovnog postavljanja. Promena promenljive u podešavanjima obično stupa na snagu tek kad se aplikacija ponovo pokrene ili ponovo objavi.
  • Jedan ključ za sve. Odvojeni ključevi za test i live, i po aplikaciji, omogućavaju da opozovete jedan bez kvara ostalih.
  • Bez ograničenja potrošnje. Za plaćene API-je postavite budžet ili limit u kontrolnoj tabli provajdera, za slučaj da ključ procuri.

Šta tražiti od AI graditelja

  • „Čitaj Stripe tajni ključ iz promenljive okruženja pod nazivom STRIPE_SECRET_KEY. Koristi ga samo na serveru.“
  • „Proveri da se nijedna tajna ne koristi u kodu na klijentu niti dobija prefiks VITE_ / NEXT_PUBLIC_.“
  • „Napravi .env.example sa svim promenljivima koje aplikacija treba, bez vrednosti, i proveri da je .env ignorisan od git-a.“
  • „Proveri izgrađene frontend fajlove za bilo koji niz koji liči na API ključ.“

Naša bezbednosna lista za aplikacije napravljene uz AI pokriva tajne zajedno sa ostalim proverama pre lansiranja.

Tajne na Mythex-u

Na Mythex-u su tajne promenljive okruženja projekta koje se ubacuju i u peščanik pregleda i u objavljenu aplikaciju. Dodajete ih pod podešavanja projekta → Tajne ili komandom /secrets u chatu, a kada agentu zatreba ključ, u chatu se prikazuje kartica za tajne, pa vrednost ide u polje za unos, a ne u tekst razgovora. Ako promenite tajnu za živu aplikaciju, ponovo je objavite da bi postavljanje preuzelo promenu. Izvozi projekta ne sadrže tajne, a uvezeni .env fajlovi se čiste, pa ih ponovo dodajete u podešavanjima. Pogledajte promenljive okruženja i tajne i tajne u chatu u dokumentaciji.

Pitanja

Šta je promenljiva okruženja?

Promenljiva okruženja je imenovano podešavanje, poput STRIPE_SECRET_KEY ili DATABASE_URL, koje se programu prosleđuje kada se pokrene, umesto da bude upisano u njegov kod. Isti kod tada može da koristi različite vrednosti u razvoju i u produkciji.

Koja je razlika između promenljive okruženja i tajne?

Tajna je promenljiva okruženja čija vrednost mora ostati privatna, kao što su API ključ, lozinka baze ili tajni ključ za webhook. Druge promenljive okruženja, poput naziva sajta ili prekidača funkcije, mogu biti javne.

Da li je bezbedno da stavim API ključeve u frontend?

Ne. Sve u frontend kodu preuzima se u pregledač svakog posetioca i može da se pročita. Tajni ključevi smeju da se koriste samo na serveru, a pregledač treba da poziva vaš server, koji zatim poziva provajdera.

Šta da uradim ako mi procuri API ključ?

Odmah ga opozovite ili zamenite kod provajdera, napravite novi, ažurirajte ga tamo gde vaša aplikacija čuva tajne i ponovo postavite aplikaciju. Brisanje ključa iz koda ili istorije chata nije dovoljno, jer kopije možda već postoje.

Mythex · Pricing · Pravite bilo šta uz AI · Šabloni za sajtove i aplikacije · Mythex u poređenju · Rečnik pojmova za pravljenje aplikacija uz AI · Besplatni alati za pravljenje aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Í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 Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)