Udhëzues

Çfarë janë ndryshoret e mjedisit dhe sekretet? Udhëzues i thjeshtë

Një ndryshore mjedisi është një cilësim me emër — si DATABASE_URL ose STRIPE_SECRET_KEY — që i jepet aplikacionit tënd kur ai funksionon, në vend që të shkruhet brenda kodit. Një sekret është një ndryshore mjedisi, vlera e së cilës duhet të mbetet private: një çelës API, një fjalëkalim, një çelës nënshkrimi. Mbajtja e këtyre vlerave jashtë kodit do të thotë që mund t'i ndryshosh pa redaktuar aplikacionin, të përdorësh vlera të ndryshme për testim dhe për klientët reale, dhe të ndalosh rrjedhjen e tyre kur ndan ose publikon kodin.

Pse ka rëndësi kur ndërton me AI

Në çastin që aplikacioni yt bën diçka të dobishme me një shërbim tjetër — merr një pagesë, dërgon një email, thërret një model AI — i duhet një çelës. Ndërtuesit e aplikacioneve me AI kërkojnë rregullisht këta çelësa, dhe vendi ku përfundon çelësi përcakton nëse aplikacioni yt është i sigurt.

Dy gjëra shpesh shkojnë keq në aplikacionet e ndërtuara me AI:

  • Çelësi ngjitet në bisedë ose në kod. Atëherë ai jeton në historikun e bisedës, te skedarët e projektit dhe në çdo eksport ose depo. Kushdo që e sheh mund të përdorë llogarinë tënde.
  • Çelësi përdoret në shfletues. Nëse kodi që thërret Stripe ose OpenAI funksionon në faqe, çelësi dërgohet te çdo vizitor. Njerëzit e shikojnë, dhe skanerat automatikë kërkojnë vazhdimisht çelësa të ekspozuar.

Kuptimi i ndryshoreve të mjedisit të lejon t'i dallosh të dyja dhe të kërkosh rregullimin.

Një analogji e përditshme: kasaforta e hotelit

Kodi i aplikacionit tënd është si dhoma e hotelit. Mysafirët (dhe pastruesit, dhe kushdo që i jep kartën e çelësit) kalojnë nëpër të. Pasaportën nuk e le mbi tavolinë.

Ndryshoret e mjedisit janë kasaforta brenda dhomës. Dhoma e di që ekziston një kasafortë dhe si ta hapë kur duhet, por pasaporta nuk është e shtrirë kudo. Dhe nëse zhvendosesh nga një dhomë në tjetrën — nga konfigurimi yt i testimit te faqja jote e gjallë — vendos një pasaportë tjetër në kasafortën e asaj dhome, pa e rimobiluar.

Si funksionon

Kodi yt i referohet një emri, jo një vlere. Në JavaScript në server, kjo duket si process.env.STRIPE_SECRET_KEY. Kur aplikacioni nis, platforma ku funksionon plotëson vlerën për atë emër. Ndrysho vlerën te cilësimet e platformës, rinis ose publiko përsëri, dhe aplikacioni përdor të renë — pa ndryshim kodi.

Vlerat vijnë nga vende të ndryshme, në varësi të vendit ku funksionon aplikacioni:

Ku funksiononKu mbahen vlerat
Në laptopin e zhvilluesitNjë skedar lokal, zakonisht i quajtur .env, që nuk duhet kurrë të commit-ohet në git
Në pamjen paraprake të një ndërtuesi me AIPaneli i sekreteve ose i cilësimeve të projektit
Në një platformë hostimiCilësimet e ndryshoreve të mjedisit të asaj platforme
Në GitHub Actions ose automatizime të tjeraDepozita e enkriptuar e sekreteve të shërbimit

Ndryshore publike kundrejt sekretesh

Jo çdo ndryshore mjedisi është sekret. Ndihmon t'i ndash në dy grupe:

LlojiShembujMund ta shohë shfletuesi?
Konfigurim publikEmri i faqes, ID-ja publike e analitikës, çelësi i publikueshëm i Stripe, çelësat e funksionalitetevePo, kjo është në rregull
SekreteÇelësi sekret i Stripe, çelësi API i OpenAI ose Anthropic, vargu i lidhjes me bazën e të dhënave, çelësi i ofruesit të email-it, sekreti i nënshkrimit të webhook-utKurrë

Kornizat e uebit e bëjnë këtë ndarje të qartë. Në Vite, vetëm ndryshoret me emra që fillojnë me VITE_ përfshihen në kodin e shfletuesit; në Next.js, prefiksi është NEXT_PUBLIC_. Kjo është një veçori sigurie: çdo gjë me këta prefiksa përfundon në skedarët që shkarkon çdo vizitor, prandaj një sekret nuk duhet t'i jepet kurrë asnjë prej tyre.

Një shembull i punuar: një buton përmbledhjeje me AI

Don të kesh një buton "Përmblidh këtë shënim" që thërret një model AI.

Versioni i pasigurt: kodi i butonit, që funksionon në shfletues, thërret direkt ofruesin e AI me çelësin API të shkruar brenda tij. Funksionon në pamjen paraprake. Por do të thotë që kushdo mund të hapë veglat e zhvilluesit të shfletuesit, të kopjojë çelësin dhe të shpenzojë në llogarinë tënde.

Versioni i sigurt:

  1. Krijon çelësin te ofruesi i AI dhe e ruan si sekret me emrin OPENAI_API_KEY (ose të ngjashëm) te cilësimet e projektit.
  2. Backend-i ka një rrugë, POST /api/summarise, që lexon process.env.OPENAI_API_KEY, kontrollon që përdoruesi të jetë i kyçur dhe thërret ofruesin.
  3. Butoni thërret rrugën tënde, jo ofruesin. Shfletuesi nuk e sheh kurrë çelësin.
  4. Shton të njëjtin sekret te cilësimet e aplikacionit të publikuar dhe publikon përsëri, që faqja e gjallë ta ketë gjithashtu.

Ky model — shfletuesi thërret serverin tënd, serveri mban çelësin dhe thërret shërbimin — vlen për pagesat, email-in, hartat dhe çdo API tjetër me pagesë. Udhëzuesi për përdorimin e API-ve LLM e trajton rastin e AI më thellësisht.

Terma kryesorë

  • Skedari .env: një skedar tekst me rreshta EMRI=vlera, i përdorur në zhvillimin lokal. Shtoje në .gitignore që të mos commit-ohet.
  • .env.example: një kopje me emrat por pa vlera reale, e commit-uar që të tjerët të dinë cilat ndryshore duhet të vendosin.
  • Rrotullim: zëvendëso një sekret me një të ri dhe revoko të vjetrin.
  • Qasja / lejet: shumë ofrues të lejojnë të krijosh çelësa që mund të bëjnë vetëm disa gjëra. Një çelës që mund vetëm të dërgojë email është më pak i rrezikshëm se një që mund çdo gjë.
  • Çelësa testimi kundrejt atyre live: ofrues si Stripe të japin çelësa të veçantë për testim dhe për para të vërteta. Përdor çelësat e testimit deri në lansim.
  • Sekreti i nënshkrimit: një sekret që përdoret për të kontrolluar që një mesazh, si një webhook, vjen vërtet nga dërguesi.

Gabime dhe keqkuptime të zakonshme

  • "Depoja ime është private, pra çelësat brenda saj janë në rregull." Depozitat private ndahen, bëhen fork, eksportohen dhe klonohen te laptopët. Çelësat nuk i takojnë aty. Nëse lidh një projekt me GitHub, kontrollo që asnjë skedar .env të mos jetë përfshirë.
  • "E fshiva, pra s'ka më." Git mban historikun, dhe historiku i bisedave mban mesazhet. Nëse një çelës ka qenë ndonjëherë i ekspozuar, rrotulloje.
  • Përdorimi i një prefiksi publik në një sekret. VITE_OPENAI_KEY e vendos çelësin tënd në paketën e shfletuesit.
  • Harrimi i publikimit përsëri. Ndryshimi i një ndryshoreje te cilësimet zakonisht hyn në fuqi vetëm pasi aplikacioni rinisët ose publikohet përsëri.
  • Një çelës për gjithçka. Çelësa të veçantë për testim dhe për gjallë, dhe për çdo aplikacion, e bëjnë të mundur revokimin e njërit pa prishur pjesën tjetër.
  • Pa kufi shpenzimi. Për API-të me pagesë, vendos një buxhet ose limit te paneli i ofruesit, në rast se një çelës rrjedh.

Çfarë t'i kërkosh ndërtuesit tënd me AI

  • "Lexo çelësin sekret të Stripe nga një ndryshore mjedisi me emrin STRIPE_SECRET_KEY. Përdore vetëm në server."
  • "Sigurohu që asnjë sekret të mos përdoret në kodin e klientit dhe të mos i jepet prefiks VITE_ / NEXT_PUBLIC_."
  • "Krijo një .env.example që liston çdo ndryshore që aplikacioni duhet, pa vlera, dhe sigurohu që .env të jetë i injoruar nga git."
  • "Kontrollo skedarët e ndërtuar të frontend-it për çdo varg që duket si çelës API."

Lista jonë e sigurisë për aplikacionet e ndërtuara me AI i mbulon sekretet së bashku me kontrollet e tjera që vlen t'i bësh para lansimit.

Sekretet te Mythex

Në Mythex, sekretet janë ndryshore mjedisi të projektit që injektohen si në sandbox-in e pamjes paraprake, ashtu edhe në aplikacionin tënd të publikuar. I shton te cilësimet e projektit → Secrets ose me /secrets në bisedë, dhe kur agjenti ka nevojë për një çelës, shfaq një kartelë sekretesh në bisedë, kështu që vlera shkon në një fushë formulari dhe jo në tekstin e bisedës. Nëse ndryshon një sekret për një aplikacion live, publiko përsëri që deploy-i ta marrë. Eksportet e projektit i lënë sekretet jashtë, dhe skedarët .env të importuar hiqen, kështu që i rishton në cilësime. Shih ndryshoret e mjedisit dhe sekretet dhe sekretet në bisedë në dokumentacion.

Pyetje

Çfarë është një ndryshore mjedisi?

Një ndryshore mjedisi është një cilësim me emër, si STRIPE_SECRET_KEY ose DATABASE_URL, që i jepet një programi kur nis, në vend që të shkruhet brenda kodit të tij. I njëjti kod mund të përdorë atëherë vlera të ndryshme në zhvillim dhe në prodhim.

Cila është ndryshimi mes një ndryshore mjedisi dhe një sekreti?

Një sekret është një ndryshore mjedisi, vlera e së cilës duhet të mbetet private, si një çelës API, një fjalëkalim i bazës së të dhënave ose një sekret nënshkrimi i webhook-ut. Ndryshoret e tjera të mjedisit, si emri i faqes ose një çelës funksionaliteti, mund të jenë publike.

A është e sigurt të vendos çelësat API në frontend?

Jo. Çdo gjë në kodin e frontend-it shkarkohet në shfletuesin e çdo vizitori dhe mund të lexohet. Çelësat sekretë duhet të përdoren vetëm në server, dhe shfletuesi duhet të thërrasë serverin tënd, i cili më pas thërret ofruesin.

Çfarë duhet të bëj nëse çelësi im API rrjedh?

Revoko ose rrotullo menjëherë çelësin te ofruesi, krijo një të ri, përditëso vendin ku aplikacioni yt ruan sekretet dhe publiko përsëri. Fshirja e çelësit nga kodi ose historiku i bisedës nuk mjafton, sepse mund të ekzistojnë kopje.

Mythex · Pricing · Ndërtoni çdo gjë me AI · Shablone faqesh dhe aplikacionesh · Mythex në krahasim · Fjalori i ndërtimit të aplikacioneve me AI · Mjete falas për ndërtimin e aplikacioneve me 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 Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)