Príručky

Ako bezpečne uchovávať API kľúče vo svojej appke

Ak chcete bezpečne uchovávať API kľúče, ukladajte ich ako tajomstvá alebo premenné prostredia na hostingu, používajte ich len v kóde na strane servera a nikdy ich nevkladajte do chatu, súborov s kódom, screenshotov ani Git repozitára. Každému kľúču dajte len oprávnenia, ktoré potrebuje, nastavte limity výdavkov u poskytovateľa a ak kľúč niekedy unikne, rotujte ho — vytvorte nový a starý zmažte — namiesto toho, aby ste ho len skryli.

API kľúč je heslo k službe. Váš kľúč OpenAI umožní niekomu míňať vaše peniaze na AI; váš tajný kľúč Stripe umožní vracať platby; kľúč vášho poskytovateľa e-mailov umožní posielať poštu v vašom mene. AI tvorcovia appiek sú dobrí v tom, ako ich zapojiť, no nie vždy dávajú pozor, kam sa dostanú, preto tento návod pokrýva, ako ich chrániť a ako to overiť.

Verejné kľúče vs. tajné kľúče

Nie každý kľúč je tajný. Ak viete rozdiel, nebudete panikáriť kvôli tomu zlému a neignorujete ten správny.

TypPríkladyMôže byť v prehliadači?
Publikovateľné / verejné kľúčeKľúč Stripe pk_…, kľúč pre mapy obmedzený na vašu doménu, niektoré ID analytikyÁno — je na to navrhnutý
Tajné kľúčeStripe sk_…, kľúče OpenAI a Anthropic, kľúče poskytovateľov e-mailov, heslá k databázeNikdy
Servisné/administrátorské kľúčeKľúče, ktoré obchádzajú pravidlá prístupu na hostovanej databázeNikdy — považujte ich za najcitlivejšie

Ak si nie ste istí, o aký typ ide, pozrite dokumentáciu poskytovateľa. Keď pochybujete, považujte ho za tajný.

Krok 1: Ukladajte kľúče ako tajomstvá, nie v kóde

Kľúče patria do nastavení premenných prostredia alebo tajomstiev vášho hostingu. Váš kód ich číta podľa názvu za behu (napríklad process.env.OPENAI_API_KEY), takže hodnota sa nikdy neobjaví vo vašich súboroch. Pozadie nájdete v článku čo sú premenné prostredia a tajomstvá.

Presuň každý API kľúč z kódu do premenných prostredia. Vypíš každý kľúč, ktorý si našiel, v ktorom súbore bol a aký názov premennej si použil. Hodnoty mi neukazuj.

Potom skontrolujte, že nezostalo nič:

Prehľadaj celý projekt vrátane konfiguračných súborov a všetkých .env súborov na čokoľvek, čo vyzerá ako API kľúč alebo heslo. Nahlás súbor a riadok, nie hodnotu.

Krok 2: Tajné kľúče používajte len na serveri

Toto pravidlo je najdôležitejšie. Čokoľvek, čo prehliadač dostane, môže návštevník prečítať — zdrojový kód stránky a JavaScript súbory sú viditeľné v nástrojoch pre vývojárov.

Ak teda appka potrebuje volať OpenAI, prehliadač má volať váš server a váš server volá OpenAI s kľúčom. Kľúč nikdy neopustí server.

Chatová funkcia volá OpenAI priamo z prehliadača. Presuň toto volanie na serverovú API trasu, ktorá číta OPENAI_API_KEY z prostredia. Prehliadač má volať len našu trasu. Pre trasu vyžaduj prihlásenie.

Jedna častá pasca vo frontend frameworkoch: premenné s verejným prefixom — VITE_ vo Vite, NEXT_PUBLIC_ v Next.js — sa zámerne vložia do kódu v prehliadači. Tajný kľúč s takým prefixom je vystavený, aj keď je „v premennej prostredia“.

Krok 3: Otestujte, že nič neuniká

Nespoliehajte sa na to, že to funguje — skontrolujte živú stránku:

  1. Otvorte publikovanú appku v prehliadači.
  2. Otvorte nástroje pre vývojárov a záložku Sources alebo Network.
  3. Prehľadajte súbory na prvé znaky každého tajného kľúča (napríklad sk_ alebo sk-).
  4. Skontrolujte sieťové požiadavky, ktoré appka robí. Požiadavka, ktorá ide priamo z prehliadača k platenému poskytovateľovi AI, je varovný signál.

Ak nájdete tajný kľúč, presuňte ho na server (krok 2) a rotujte ho (krok 6), lebo už bol verejný.

Krok 4: Obmedzte, čo každý kľúč môže robiť

Mnoho poskytovateľov umožňuje kľúč obmedziť:

  • Rozsahom obmedzené alebo obmedzené kľúče, ktoré môžu robiť len to, čo appka potrebuje. Stripe napríklad podporuje obmedzené kľúče s konkrétnymi oprávneniami.
  • Obmedzenia podľa domény alebo IP pre kľúče, ktoré musia byť verejné, napríklad kľúče pre mapy.
  • Oddelené kľúče pre každú appku a prostredie, aby jeden únik neodhalil všetko a zrušenie jedného neporušilo ostatné.
  • Testovacie kľúče počas vývoja a živé kľúče len v publikovanej appke.

Krok 5: Dajte strop škodám

Aj dobre chránený kľúč možno zneužiť cez vašu vlastnú appku — napríklad niekto skriptom volá vašu AI funkciu tisíckrát.

  • Nastavte limity výdavkov alebo upozornenia u každého plateného poskytovateľa.
  • Vyžadujte prihlásenie pre každú funkciu, ktorá stojí peniaze za volanie.
  • Pridajte limit požiadaviek na používateľa. Pozrite čo je obmedzovanie požiadaviek.

Pridaj limit 30 AI požiadaviek na používateľa za hodinu pre /api/chat. Pri dosiahnutí limitu vráť jasnú správu. Odmietni požiadavky od používateľov, ktorí nie sú prihlásení.

Krok 6: Rotujte kľúče, ktoré unikli

Ak sa tajný kľúč objaví tam, kde nemá — v správe v chate, v commite, na screenshote, v podpornom tikete, v kóde v prehliadači — počítajte s tým, že je kompromitovaný.

  1. Vytvorte nový kľúč u poskytovateľa.
  2. Aktualizujte tajomstvo v nastaveniach svojej appky.
  3. Znova nasadte alebo publikujte, aby živá appka používala nový kľúč.
  4. Zmažte starý kľúč u poskytovateľa.
  5. Skontrolujte logy využitia u poskytovateľa a hľadajte aktivitu, ktorú nepoznáte.

Zmazanie správy v chate alebo Git commitu nestačí. Git história uchováva staré verzie a všetko verejné mohlo byť už skopírované.

Časté chyby

  • Vloženie kľúča do promptu. Teraz je v histórii chatu. Namiesto toho použite formulár na tajomstvá.
  • Verejný prefix pri tajnej premennej. VITE_OPENAI_API_KEY dodá kľúč každému návštevníkovi.
  • Commitnutý súbor .env. Pred prvým pushom sa uistite, že je v .gitignore.
  • Jeden kľúč všade. Používajte oddelené kľúče pre testovanie a živú verziu a pre každú appku.
  • Žiadny limit výdavkov. Uniknutý alebo zneužitý kľúč bez stropu môže nabehnúť veľký účet skôr, než si to všimnete.
  • Skrývanie namiesto rotácie. Keď kľúč unikne, len nový kľúč problém opraví.
  • Kľúče na screenshotoch. Pred zdieľaním nastavení na pomoc ich orezte alebo rozmažte.

Kontrolný zoznam

  • Každý kľúč je uložený ako tajomstvo alebo premenná prostredia, nie v kóde.
  • Žiadny súbor .env ani kľúč nie je commitnutý do Gitu.
  • Tajné kľúče sa používajú len v kóde na strane servera.
  • Žiadna tajná premenná nemá verejný prefix ako VITE_ alebo NEXT_PUBLIC_.
  • Prehľadal som JavaScript na živej stránke na prefix každého kľúča a nič som nenašiel.
  • Kľúče sú obmedzené alebo rozsahom ohraničené, ak to poskytovateľ umožňuje.
  • Testovacie a živé kľúče sú oddelené.
  • Platené funkcie vyžadujú prihlásenie a majú limity na používateľa.
  • Každý platený poskytovateľ má strop výdavkov alebo upozornenie.
  • Viem, ako rotovať každý kľúč, a každý kľúč, ktorý bol niekedy vystavený, bol rotovaný.

Ochrana kľúčov na Mythexe

Mythex udržiava kľúče mimo vášho kódu a chatu dvoma spôsobmi:

  • Karta žiadosti o tajomstvo. Keď agent kľúč potrebuje, zobrazí v chate kartu, kde hodnotu zadáte do poľa formulára, nie do vstupu správy, a uloží sa ako tajomstvo projektu. Pozrite Tajomstvá v chate.
  • Nastavenia projektu → Secrets alebo /secrets v chate na pridanie alebo zmenu kľúčov vlastnou rukou. Pozrite Premenné prostredia a tajomstvá.

Po zmene tajomstva pre publikovanú appku ju znova publikujte, aby živá appka prevzala zmenu. Exportované projekty tajomstvá vynechávajú, takže ich znova pridajte tam, kde kód spúšťate ďalej. Ak sa kľúč niekedy objaví v chate, rotujte ho u poskytovateľa.

Zvyšok bezpečnostnej kontroly pred spustením nájdete v kontrolnom zozname bezpečnosti pre appky vytvorené AI. Ak pridávate AI funkcie, ako používať LLM API vysvetľuje kľúče a náklady podrobnejšie.

Otázky

Je bezpečné dať API kľúč do frontend kódu?

Len vtedy, ak ho poskytovateľ navrhol ako verejný, napríklad publikovateľný kľúč Stripe alebo kľúč pre mapy obmedzený na vašu doménu. Každý kľúč, ktorým sa dá míňať peniaze alebo čítať súkromné dáta, musí zostať na serveri, pretože čokoľvek, čo sa pošle do prehliadača, môže ktokoľvek prečítať.

Čo mám urobiť, ak som vložil API kľúč do chatu alebo do verejného repozitára?

Rotujte ho: vytvorte nový kľúč u poskytovateľa, aktualizujte tajomstvá svojej appky, znova publikujte a potom zmažte starý kľúč. Zmazanie správy alebo commitu nestačí, lebo kópie už môžu existovať.

Kde by mali byť API kľúče uložené?

V nastaveniach premenných prostredia alebo tajomstiev vášho hostingu, ktoré kód na serveri číta za behu. Nemali by byť zapísané v zdrojových súboroch, commitnuté do Gitu ani zachytené na screenshotoch.

Ako zistím, či je môj API kľúč na webe vystavený?

Otvorte živú stránku, pozrite zdrojový kód stránky a JavaScript súbory v nástrojoch pre vývojárov prehliadača a vyhľadajte začiatok kľúča. Ak sa tam objaví, je vystavený a treba ho presunúť na server a rotovať.

Mythex · Pricing · Vytvorte čokoľvek s AI · Šablóny webov a aplikácií · Mythex v porovnaní · Slovník pojmov tvorby aplikácií s AI · Bezplatné nástroje na tvorbu aplikácií s 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 简体中文 繁體中文(香港) 繁體中文(台灣)