Kas ir vides mainīgie un noslēpumi? Vienkāršs ceļvedis
Vides mainīgais ir nosaukts iestatījums, piemēram, DATABASE_URL vai STRIPE_SECRET_KEY, ko lietotnei nodod, kad tā darbojas, nevis ieraksta kodā. Noslēpums ir vides mainīgais, kura vērtībai jāpaliek privātai: API atslēga, parole vai parakstīšanas atslēga. Ja šīs vērtības glabājat ārpus koda, varat tās mainīt, neizmainot lietotni, izmantot dažādas vērtības testēšanai un reāliem klientiem, kā arī novērst to noplūdi, kad kopīgojat vai publicējat kodu.
Kāpēc tas ir svarīgi, veidojot ar AI
Brīdī, kad jūsu lietotne dara ko noderīgu ar citu pakalpojumu — pieņem maksājumu, sūta e-pastu, izsauc AI modeli —, tai nepieciešama atslēga. AI lietotņu veidotāji regulāri prasa šīs atslēgas, un tas, kur atslēga nonāk, nosaka, vai jūsu lietotne ir droša.
AI veidotās lietotnēs bieži notiek divas kļūdas:
- Atslēga tiek ielīmēta tērzēšanā vai kodā. Tad tā paliek tērzēšanas vēsturē, projekta failos un jebkurā eksportā vai repozitorijā. Ikviens, kas to redz, var izmantot jūsu kontu.
- Atslēga tiek izmantota pārlūkprogrammā. Ja kods, kas izsauc Stripe vai OpenAI, darbojas lapā, atslēga tiek nosūtīta katram apmeklētājam. Cilvēki tiešām skatās, un automatizēti skeneri meklē atklātas atslēgas nepārtraukti.
Saprotot vides mainīgos, varat pamanīt abas problēmas un prasīt labojumu.
Ikdienas salīdzinājums: viesnīcas seifs
Jūsu lietotnes kods ir kā viesnīcas istaba. Viesi (un uzkopēji, un ikviens, kam dodat kartīti) tajā staigā. Savu pasi jūs neatstātu uz galda.
Vides mainīgie ir istabas seifs. Istaba zina, ka seifs ir, un zina, kā to atvērt, kad vajag, bet pase nav izmētāta apkārt. Un, ja pārceļaties uz citu istabu — no testēšanas iestatījumiem uz savu tiešraides vietni —, tā seifā ieliekat citu pasi, neko citu nemainot.
Kā tas darbojas
Jūsu kods atsaucas uz nosaukumu, nevis uz vērtību. JavaScript serverī tas izskatās kā process.env.STRIPE_SECRET_KEY. Kad lietotne sākas, platforma, kurā tā darbojas, šim nosaukumam ieliek vērtību. Ja platformas iestatījumos maināt vērtību un pārstartējat vai izvietojat lietotni no jauna, lietotne izmanto jauno vērtību — kods nav jāmaina.
Vērtības nāk no vietas, kur darbojas lietotne:
| Kur tā darbojas | Kur vērtības glabājas |
|---|---|
| Izstrādātāja klēpjdatorā | Lokālā fails, parasti saukts .env, kuru nekad nedrīkst iekļaut git |
| AI veidotāja priekšskatījumā | Projekta noslēpumu vai iestatījumu panelis |
| Hostinga platformā | Šīs platformas vides mainīgo iestatījumi |
| GitHub Actions vai citā automatizācijā | Pakalpojuma pašu šifrētais noslēpumu krātuve |
Publiskie un slepenie mainīgie
Ne katrs vides mainīgais ir slepens. Noderīgi tos sadalīt divās grupās:
| Veids | Piemēri | Vai pārlūkprogramma to redz? |
|---|---|---|
| Publiskā konfigurācija | Vietnes nosaukums, publiskais analītikas ID, Stripe publishable atslēga, funkciju slēdži | Jā, tas ir normāli |
| Noslēpumi | Stripe secret atslēga, OpenAI vai Anthropic API atslēga, datubāzes savienojuma virkne, e-pasta pakalpojuma atslēga, webhook parakstīšanas noslēpums | Nekad |
Web ietvari šo sadalījumu padara skaidru. Vite ietvarā pārlūkprogrammas kodā tiek iekļauti tikai mainīgie, kuru nosaukums sākas ar VITE_; Next.js ietvarā priedēklis ir NEXT_PUBLIC_. Tā ir drošības funkcija: viss ar šiem priedēkļiem nonāk failos, ko lejupielādē katrs apmeklētājs, tāpēc noslēpumam tāds priedēklis nekad nedrīkst tikt piešķirts.
Praktisks piemērs: AI kopsavilkuma poga
Vēlaties pogu „Apkopot šo piezīmi”, kas izsauc AI modeli.
Nedrošais variants: pogas kods, kas darbojas pārlūkprogrammā, tieši izsauc AI pakalpojuma sniedzēju, un API atslēga ir ierakstīta kodā. Priekšskatījumā tas strādā. Taču tas nozīmē, ka ikviens var atvērt pārlūkprogrammas izstrādātāja rīkus, nokopēt atslēgu un izveidot rēķinu jūsu kontā.
Drošais variants:
- Atslēgu izveidojat AI pakalpojuma sniedzējā un saglabājat kā noslēpumu ar nosaukumu
OPENAI_API_KEY(vai līdzīgu) projekta iestatījumos. - Backend saņem maršrutu
POST /api/summarise, kas nolasaprocess.env.OPENAI_API_KEY, pārbauda, vai lietotājs ir pieteicies, un izsauc pakalpojuma sniedzēju. - Poga izsauc jūsu maršrutu, nevis pakalpojuma sniedzēju. Pārlūkprogramma atslēgu nekad neredz.
- Tas pats noslēpums tiek pievienots publicētās lietotnes iestatījumiem, un lietotne tiek izvietota no jauna, lai arī tiešraides vietnē tas būtu.
Tas modelis — pārlūkprogramma izsauc jūsu serveri, jūsu serveris glabā atslēgu un izsauc pakalpojumu — attiecas uz maksājumiem, e-pastu, kartēm un visiem citiem maksas API. Ceļvedis par LLM API izmantošanu detalizētāk apskata AI gadījumu.
Galvenie termini
.envfails: teksta fails ar rindāmNAME=value, ko izmanto lokālajā izstrādē. Iekļaujiet to.gitignore, lai tas netiktu iesniegts git..env.example: kopija ar nosaukumiem, bet bez reālām vērtībām; to iesniedz git, lai citi zinātu, kurus mainīgos iestatīt.- Rotēt: nomainīt noslēpumu ar jaunu un atsaukt veco.
- Darbības joma / atļaujas: daudzi pakalpojumu sniedzēji ļauj izveidot atslēgas, kas var veikt tikai noteiktas darbības. Atslēga, kas var tikai sūtīt e-pastu, ir mazāk bīstama nekā tāda, kas var visu.
- Testa vai tiešraides atslēgas: pakalpojumi, piemēram, Stripe, dod atsevišķas atslēgas testēšanai un reālai naudai. Līdz palaišanai izmantojiet testa atslēgas.
- Parakstīšanas noslēpums: noslēpums, ko izmanto, lai pārbaudītu, ka ziņa, piemēram, webhook, patiešām nāk no sūtītāja.
Biežākās kļūdas un nepareizi priekšstati
- „Mans repozitorijs ir privāts, tāpēc atslēgas tajā ir drošas.” Privātie repozitoriji tiek kopīgoti, forkoti, eksportēti un klonēti klēpjdatoros. Atslēgām tur nav vieta. Ja projektu savienojat ar GitHub, pārbaudiet, vai nav iekļauts
.envfails. - „Es to izdzēsu, tātad tas ir pazudis.” Git glabā vēsturi, un tērzēšanas žurnāli glabā ziņas. Ja atslēga jebkad ir bijusi atklāta, rotējiet to.
- Publiska priedēkļa izmantošana noslēpumam.
VITE_OPENAI_KEYieliek jūsu atslēgu pārlūkprogrammas paketē. - Aizmirst izvietot no jauna. Mainījumi vides mainīgajos parasti stājas spēkā tikai pēc lietotnes restartēšanas vai atkārtotas publicēšanas.
- Viena atslēga visam. Atsevišķas atslēgas testam un tiešraidei un katrai lietotnei ļauj vienu atsaukt, nesalaužot pārējās.
- Nav izdevumu ierobežojuma. Maksas API gadījumā pakalpojuma sniedzēja panelī iestatiet budžetu vai limitu, ja atslēga tiek noplūdusi.
Ko prasīt no AI veidotāja
- „Nolasi Stripe slepeno atslēgu no vides mainīgā
STRIPE_SECRET_KEY. Izmanto to tikai serverī.” - „Pārliecinies, ka neviens noslēpums netiek izmantots klienta pusē un tam nav piešķirts priedēklis
VITE_/NEXT_PUBLIC_.” - „Izveido
.env.example, kurā uzskaitīti visi lietotnei vajadzīgie mainīgie bez vērtībām, un pārliecinies, ka.envir git-ignored.” - „Pārbaudi izveidotos frontend failus, vai tajos nav virknes, kas izskatās pēc API atslēgas.”
Mūsu drošības kontrolsaraksts AI veidotām lietotnēm aptver noslēpumus kopā ar citām pārbaudēm, kas vērts veikt pirms palaišanas.
Noslēpumi Mythex
Mythex noslēpumi ir projekta vides mainīgie, kas tiek ievadīti gan priekšskatījuma smilškastē, gan jūsu publicētajā lietotnē. Tos pievienojat zem projekta iestatījumi → Secrets vai ar /secrets tērzēšanā. Kad aģentam vajag atslēgu, tas tērzēšanā parāda noslēpumu kartīti, tāpēc vērtība tiek ievadīta formas laukā, nevis parādās ziņu vēsturē. Ja maināt noslēpumu tiešraides lietotnei, publicējiet vēlreiz, lai izvietojums to paņemtu. Projektu eksporti neiekļauj noslēpumus, un importētie .env faili tiek notīrīti, tāpēc tos pievienojiet iestatījumos no jauna. Skatiet vides mainīgos un noslēpumus un noslēpumus tērzēšanā dokumentācijā.
Jautājumi
Kas ir vides mainīgais?
Vides mainīgais ir nosaukts iestatījums, piemēram, STRIPE_SECRET_KEY vai DATABASE_URL, ko programmai nodod, kad tā darbojas, nevis ieraksta tās kodā. Tas pats kods var tad izmantot dažādas vērtības izstrādes un produkcijas vidē.
Kas ir atšķirība starp vides mainīgo un noslēpumu?
Noslēpums ir vides mainīgais, kura vērtībai jāpaliek privātai, piemēram, API atslēga, datubāzes parole vai webhook parakstīšanas noslēpums. Citi vides mainīgie, piemēram, vietnes nosaukums vai funkcijas slēdzis, var būt publiski.
Vai ir droši ievietot API atslēgas savā frontend daļā?
Nē. Viss, kas atrodas frontend kodā, tiek lejupielādēts katra apmeklētāja pārlūkprogrammā un to var nolasīt. Slepenās atslēgas drīkst izmantot tikai serverī, un pārlūkprogrammai jāsazinās ar jūsu serveri, kas pēc tam sazinās ar pakalpojuma sniedzēju.
Ko darīt, ja API atslēga ir noplūdusi?
Nekavējoties atsaucieties vai nomainiet to pakalpojuma sniedzējā, izveidojiet jaunu, atjauniniet to visur, kur jūsu lietotne glabā noslēpumus, un izvietojiet to no jauna. Atslēgas dzēšana no koda vai tērzēšanas vēstures nepietiek, jo var jau pastāvēt kopijas.