Vodniki

Kako varno hraniti API ključe v svoji aplikaciji

Za varno hranjenje API ključev jih shranite kot skrivnosti ali okoljske spremenljivke na svojem gostitelju, uporabljajte jih samo v kodi na strežniku in jih nikoli ne prilepite v klepet, kodne datoteke, posnetke zaslona ali repozitorij Git. Vsakemu ključu dajte najmanj dovoljenj, ki jih potrebuje, nastavite omejitve porabe pri ponudniku, in če ključ kdaj pušča, ga zamenjajte – ustvarite novega in starega izbrišite – namesto da ga samo skrijete z mesta, kjer se je pojavil.

API ključ je geslo za storitev. Vaš ključ OpenAI lahko nekdo porabi za AI na vaš račun; vaš tajni ključ Stripe lahko izda povračila; ključ vašega ponudnika e-pošte lahko pošlje pošto v vašem imenu. Graditelji aplikacij z AI so dobri pri povezovanju teh ključev, vendar niso vedno pazljivi, kam končajo, zato ta vodnik pokaže, kako jih varovati in kako preveriti.

Javni in tajni ključi

Ni vsak ključ tajen. Če poznate razliko, ne panikarite zaradi napačnega in ne prezrite pravega.

VrstaPrimeriSme biti v brskalniku?
Javni ključiStripe pk_… ključ, ključ za zemljevide, omejen na vašo domeno, nekateri ID-ji analitikeDa – tako je zasnovano
Tajni ključiStripe sk_…, ključi OpenAI in Anthropic, ključi ponudnikov e-pošte, gesla za bazoNikoli
Servisni ali skrbniški ključiKljuči, ki obidejo pravila dostopa v gostiteljski baziNikoli – obravnavajte jih kot najobčutljivejše

Če niste prepričani, kakšna vrsta ključa je, preverite dokumentacijo ponudnika. Ko dvomite, ga obravnavajte kot tajnega.

1. korak: shranite ključe kot skrivnosti, ne v kodo

Ključi sodijo v okoljske spremenljivke ali nastavitve skrivnosti vašega gostitelja. Koda jih prebere po imenu med izvajanjem (na primer process.env.OPENAI_API_KEY), tako da vrednost nikoli ne pride v vaše datoteke. Za ozadje glejte kaj so okoljske spremenljivke in skrivnosti.

Premakni vsak API ključ iz kode v okoljske spremenljivke. Naštej vsak ključ, ki si ga našel, v kateri datoteki je bil in katero ime spremenljivke si uporabil. Ne pokaži mi vrednosti.

Nato preverite, da ni ostal nobeden:

Preišči celoten projekt, vključno s konfiguracijskimi datotekami in morebitnimi datotekami .env, za vse, kar je videti kot API ključ ali geslo. Javi datoteko in vrstico, ne vrednosti.

2. korak: tajne ključe uporabljajte samo na strežniku

To pravilo je najpomembnejše. Vsakdo, ki obišče stran, lahko prebere vse, kar brskalnik prejme – izvorna koda strani in datoteke JavaScript so vidne v razvijalskih orodjih.

Če aplikacija potrebuje klic OpenAI, naj brskalnik kliče vaš strežnik, vaš strežnik pa OpenAI s ključem. Ključ nikoli ne zapusti strežnika.

Funkcija klepeta kliče OpenAI neposredno iz brskalnika. Premakni ta klic na strežniško pot API, ki prebere OPENAI_API_KEY iz okolja. Brskalnik naj kliče samo našo pot. Za pot zahtevaj prijavo.

Pazite na pogosto past v frontend ogrodjih: spremenljivke z javno predpono – VITE_ v Vite, NEXT_PUBLIC_ v Next.js – so namenoma vgrajene v kodo brskalnika. Tajni ključ s takšno predpono je izpostavljen, čeprav je „v okoljski spremenljivki“.

3. korak: preverite, da nič ne uhaja

Ne zaupajte, da je delovalo – preverite živo spletno mesto:

  1. Odprite objavljeno aplikacijo v brskalniku.
  2. Odprite razvijalska orodja, zavihek Sources ali Network.
  3. Iščite po datotekah prve znake vsakega tajnega ključa (na primer sk_ ali sk-).
  4. Preglejte omrežne zahteve, ki jih aplikacija pošilja. Zahteva, ki gre neposredno iz brskalnika k plačljivemu ponudniku AI, je rdeč opozorilni znak.

Če najdete tajni ključ, ga premaknite na strežnik (2. korak) in ga zamenjajte (6. korak), ker je bil že javen.

4. korak: omejite, kaj lahko vsak ključ naredi

Mnogi ponudniki omogočajo omejitev ključa:

  • Omejeni ali obsegu prilagojeni ključi, ki lahko naredijo samo to, kar aplikacija potrebuje. Stripe na primer podpira omejene ključe s posebnimi dovoljenji.
  • Omejitve domene ali IP-ja za ključe, ki morajo biti javni, na primer ključi za zemljevide.
  • Ločeni ključi na aplikacijo in okolje, da en uhajajoč ključ ne izpostavi vsega in preklic enega ne pokvari drugih.
  • Testni ključi med gradnjo in živi ključi samo v objavljeni aplikaciji.

5. korak: postavite strop škodi

Tudi dobro zaščiten ključ se lahko zlorabi prek vaše aplikacije – na primer, nekdo bi lahko skriptno tisočkrat klical vašo funkcijo z AI.

  • Nastavite omejitve porabe ali opozorila pri vsakem plačljivem ponudniku.
  • Za vsako funkcijo, ki stane denar na klic, zahtevajte prijavo.
  • Dodajte omejitev hitrosti na uporabnika. Glejte kaj je omejevanje hitrosti.

Dodaj omejitev 30 zahtev z AI na uporabnika na uro za /api/chat. Ob doseženi omejitvi vrni jasno sporočilo. Zavrni zahteve uporabnikov, ki niso prijavljeni.

6. korak: zamenjajte ključe, ki uhajajo

Če se tajni ključ pojavi tam, kjer ne bi smel – v sporočilu klepeta, commitu, posnetku zaslona, podpornem zahtevku, kodi brskalnika – predpostavite, da je ogrožen.

  1. Ustvarite nov ključ pri ponudniku.
  2. Posodobite skrivnost v nastavitvah aplikacije.
  3. Ponovno objavite ali izvedite nov zagon, da živa aplikacija uporablja nov ključ.
  4. Izbrišite stari ključ pri ponudniku.
  5. Preverite dnevnike uporabe pri ponudniku za aktivnost, ki je ne prepoznate.

Brisanje sporočila v klepetu ali commita v Gitu ni dovolj. Zgodovina Gita hrani stare različice, vse javno pa je morda že kopirano.

Pogoste napake

  • Prilepljen ključ v poziv. Zdaj je v zgodovini klepeta. Namesto tega uporabite obrazec za skrivnosti.
  • Javna predpona na tajni spremenljivki. VITE_OPENAI_API_KEY pošlje ključ vsakemu obiskovalcu.
  • Potrjena datoteka .env. Poskrbite, da je v .gitignore pred prvim pošiljanjem.
  • En ključ za vse. Za testno in živo okolje ter za vsako aplikacijo uporabite ločene ključe.
  • Brez omejitve porabe. Uhajajoč ali zlorabljen ključ brez omejitve lahko naredi velik račun, preden to opazite.
  • Skrivanje namesto zamenjave. Ko je ključ izpostavljen, samo nov ključ to popravi.
  • Ključi na posnetkih zaslona. Pred deljenjem nastavitev za pomoč jih obrežite ali zamegljite.

Kontrolni seznam

  • Vsak ključ je shranjen kot skrivnost ali okoljska spremenljivka, ne v kodi.
  • Noben ključ ali datoteka .env ni v Gitu.
  • Tajni ključi se uporabljajo samo v kodi na strežniku.
  • Nobena tajna spremenljivka nima javne predpone, kot je VITE_ ali NEXT_PUBLIC_.
  • Preiskal sem JavaScript živega spletnega mesta za predpono vsakega ključa in nič nisem našel.
  • Ključi so omejeni ali obsegu prilagojeni, kjer ponudnik to dovoljuje.
  • Testni in živi ključi so ločeni.
  • Plačljive funkcije zahtevajo prijavo in imajo omejitve na uporabnika.
  • Vsak plačljiv ponudnik ima omejitev porabe ali opozorilo.
  • Vem, kako zamenjati vsak ključ, in vsak izpostavljen ključ je bil zamenjan.

Varovanje ključev na Mythex

Mythex drži ključe stran od vaše kode in klepeta na dva načina:

  • Kartica zahtevka za skrivnosti. Ko agent potrebuje ključ, v klepetu pokaže kartico, kjer vrednost vnesete v polja obrazca, ne v vnosno polje sporočila, in shranjena je kot skrivnost projekta. Glejte Skrivnosti v klepetu.
  • Nastavitve projekta → Secrets ali /secrets v klepetu, da ključe dodajate ali spreminjate sami. Glejte Okoljske spremenljivke in skrivnosti.

Po spremembi skrivnosti za objavljeno aplikacijo jo ponovno objavite, da živa aplikacija prevzame novo vrednost. Izvoženi projekti skrivnosti ne vključujejo, zato jih znova dodajte, kjer koli zaženete kodo. Če se ključ kdaj pojavi v klepetu, ga zamenjajte pri ponudniku.

Za preostanek varnostnega pregleda pred izdajo sledite kontrolnemu seznamu varnosti za aplikacije, zgrajene z AI. Če dodajate funkcije z AI, kako uporabljati LLM API-je podrobneje pokriva ključe in stroške.

Vprašanja

Ali je varno dati API ključ v kodo frontenda?

Samo če ga je ponudnik zasnoval kot javnega, na primer javni ključ Stripe ali ključ za zemljevide, omejen na vašo domeno. Vsak ključ, ki lahko porabi denar ali bere zasebne podatke, mora ostati na strežniku, saj lahko vsakdo prebere, kar pride v brskalnik.

Kaj naj storim, če sem API ključ prilepil v klepet ali javni repozitorij?

Zamenjajte ga: ustvarite nov ključ pri ponudniku, posodobite skrivnosti aplikacije, objavite znova in nato izbrišite stari ključ. Brisanje sporočila ali commita ni dovolj, ker kopije morda že obstajajo.

Kje naj hranim API ključe?

V okoljskih spremenljivkah ali nastavitvah skrivnosti vašega gostitelja, ki jih kodo na strežniku prebere med izvajanjem. Ne smejo biti zapisani v izvorne datoteke, poslani v Git ali vključeni v posnetke zaslona.

Kako ugotovim, ali je moj API ključ izpostavljen na spletnem mestu?

Odprite svoje živo spletno mesto, oglejte si izvorno kodo strani in datoteke JavaScript v razvijalskih orodjih brskalnika ter poiščite začetek ključa. Če se pojavi, je izpostavljen in ga je treba premakniti na strežnik ter zamenjati.

Mythex · Pricing · Zgradite karkoli z AI · Predloge za spletna mesta in aplikacije · Mythex v primerjavi · Slovar pojmov gradnje aplikacij z AI · Brezplačna orodja za gradnjo aplikacij z 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 Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)