Jak chránit API klíče ve vaší aplikaci
Pro bezpečnost API klíčů je ukládejte jako tajné údaje nebo proměnné prostředí na svém hostingu, používejte je jen v kódu na serveru a nikdy je nevkládejte do chatu, souborů s kódem, snímků obrazovky ani do repozitáře Gitu. Každému klíči dejte nejmenší oprávnění, které potřebuje, u poskytovatele nastavte limity výdajů a pokud klíč unikne, vyměňte ho – vytvořte nový a starý smažte – místo toho, abyste jen skryli, kde se objevil.
API klíč je heslo ke službě. Váš klíč OpenAI může někomu umožnit utrácet vaše peníze za AI; váš tajný klíč Stripe umožní vracet platby; klíč poskytovatele e-mailů umožní posílat poštu jménem vaším. AI buildery jsou dobré v tom, jak klíče zapojí, ale ne vždy dávají pozor, kam se dostanou, proto tento návod ukazuje, jak je chránit a jak to ověřit.
Veřejné klíče a tajné klíče
Ne každý klíč je tajný. Rozdíl znát, aby vás nezneklidňovaly nesprávné klíče a správné jste nepřehlédli.
| Typ | Příklady | Může být v prohlížeči? |
|---|---|---|
| Publikovatelné / veřejné klíče | Stripe klíč pk_…, klíč k mapám omezený na vaši doménu, některá ID analytiky | Ano – jsou k tomu určené |
| Tajné klíče | Stripe sk_…, klíče OpenAI a Anthropic, klíče poskytovatelů e-mailů, hesla k databázi | Nikdy |
| Servisní a administrátorské klíče | Klíče, které obcházejí pravidla přístupu k hostované databázi | Nikdy – berte je jako nejcitlivější |
Pokud si nejste jisti, o jaký typ jde, podívejte se do dokumentace poskytovatele. Když pochybujete, berte to jako tajné.
Krok 1: Ukládejte klíče jako tajné údaje, ne do kódu
Klíče patří do nastavení proměnných prostředí nebo tajných údajů vašeho hostingu. Váš kód je čte podle názvu za běhu (například process.env.OPENAI_API_KEY), takže hodnota se nikdy neobjeví ve vašich souborech. Pozadí najdete v článku co jsou proměnné prostředí a tajné údaje.
Přesuň každý API klíč z kódu do proměnných prostředí. Vypiš každý nalezený klíč, v jakém souboru byl a jaký název proměnné jsi použil. Hodnoty mi neukazuj.
Pak ověřte, že nic nezůstalo:
Prohledej celý projekt, včetně konfiguračních souborů a všech souborů .env, a hledej cokoli, co vypadá jako API klíč nebo heslo. Nahlas soubor a řádek, ne hodnotu.
Krok 2: Tajné klíče používejte jen na serveru
Toto pravidlo je nejdůležitější. Cokoli, co prohlížeč přijme, může návštěvník přečíst – zdrojový kód stránky a soubory JavaScriptu jsou vidět v nástrojích pro vývojáře.
Pokud tedy aplikace potřebuje volat OpenAI, prohlížeč má volat váš server a váš server volá OpenAI s klíčem. Klíč ze serveru nikdy neodejde.
Chatovací funkce volá OpenAI přímo z prohlížeče. Přesuň toto volání do serverové API trasy, která čte OPENAI_API_KEY z prostředí. Prohlížeč má volat jen naši trasu. Pro trasu vyžaduj přihlášení.
Pozor na jednu častou past ve frontendových frameworcích: proměnné s veřejnou předponou – VITE_ ve Vite, NEXT_PUBLIC_ v Next.js – se záměrně vkládají do kódu v prohlížeči. Tajný klíč s takovou předponou je vystavený, i když je „v proměnné prostředí“.
Krok 3: Ověřte, že nic neuniká
Nespoléhejte se na to, že to funguje – zkontrolujte živý web:
- Otevřete publikovanou aplikaci v prohlížeči.
- Otevřete nástroje pro vývojáře a záložku Sources nebo Network.
- Hledejte v souborech první znaky každého tajného klíče (například
sk_nebosk-). - Zkontrolujte síťové požadavky, které aplikace dělá. Požadavek jdoucí přímo z prohlížeče k placenému poskytovateli AI je varovný signál.
Pokud najdete tajný klíč, přesuňte ho na server (krok 2) a vyměňte (krok 6), protože už byl veřejný.
Krok 4: Omezte, co každý klíč může dělat
Mnoho poskytovatelů umožňuje klíče omezit:
- Omezené klíče (scoped nebo restricted), které mohou dělat jen to, co aplikace potřebuje. Stripe například podporuje omezené klíče se specifickými oprávněními.
- Omezení na doménu nebo IP adresu u klíčů, které musí být veřejné, například klíčů k mapám.
- Oddělené klíče pro každou aplikaci a prostředí, aby jeden únik neodhalil všechno a zrušení jednoho nerozbilo ostatní.
- Testovací klíče během vývoje, živé klíče jen v publikované aplikaci.
Krok 5: Omezte možné škody
I dobře chráněný klíč lze zneužít přes vaši vlastní aplikaci – například tím, že někdo skriptuje vaši funkci AI tisíckrát.
- Nastavte limity výdajů nebo upozornění u každého placeného poskytovatele.
- Vyžadujte přihlášení pro každou funkci, která stojí peníze za volání.
- Přidejte limit požadavků na uživatele. Viz co je omezení počtu požadavků.
Přidej limit 30 požadavků AI na uživatele za hodinu do /api/chat. Při dosažení limitu vrať jasnou zprávu. Odmítni požadavky od uživatelů, kteří nejsou přihlášeni.
Krok 6: Vyměňte klíče, které unikly
Pokud se tajný klíč objeví na místě, kde nemá být – ve zprávě v chatu, v commitu, na snímku obrazovky, v podpůrném tiketu, v kódu v prohlížeči – počítejte s tím, že je kompromitovaný.
- Vytvořte nový klíč u poskytovatele.
- Aktualizujte tajný údaj v nastavení aplikace.
- Znovu nasaďte nebo znovu publikujte, aby živá aplikace používala nový klíč.
- Smažte starý klíč u poskytovatele.
- Zkontrolujte logy využití u poskytovatele a hledejte aktivitu, kterou nepoznáváte.
Smazání zprávy v chatu nebo commitu v Gitu nestačí. Historie Gitu uchovává staré verze a cokoli veřejného už mohlo být zkopírováno.
Časté chyby
- Vložení klíče do promptu. Je teď v historii chatu. Místo toho použijte formulář pro tajné údaje.
- Veřejná předpona u tajné proměnné.
VITE_OPENAI_API_KEYodešle klíč každému návštěvníkovi. - Commitování souboru
.env. Před prvním nahráním se ujistěte, že je v.gitignore. - Jeden klíč všude. Používejte oddělené klíče pro testování a produkci a pro každou aplikaci.
- Bez limitu výdajů. Uniklý nebo zneužitý klíč bez stropu může nahromadit velký účet, než si toho všimnete.
- Skrývání místo výměny. Jakmile byl klíč vystaven, opraví to jen nový klíč.
- Klíče na snímcích obrazovky. Před sdílením nastavení pro pomoc ořízněte nebo rozmažte stránky s nastavením.
Kontrolní seznam
- Každý klíč je uložený jako tajný údaj nebo proměnná prostředí, ne v kódu.
- Žádný soubor
.envani klíč není commitovaný do Gitu. - Tajné klíče se používají jen v kódu na serveru.
- Žádný tajný údaj nemá veřejnou předponu jako
VITE_neboNEXT_PUBLIC_. - Prohledal jsem JavaScript živého webu podle předpony každého klíče a nic jsem nenašel.
- Klíče jsou omezené, kde to poskytovatel dovoluje.
- Testovací a živé klíče jsou oddělené.
- Placené funkce vyžadují přihlášení a mají limity na uživatele.
- Každý placený poskytovatel má strop výdajů nebo upozornění.
- Vím, jak vyměnit každý klíč, a každý klíč, který kdy unikl, byl vyměněn.
Ochrana klíčů v Mythexu
Mythex udržuje klíče mimo váš kód a chat dvěma způsoby:
- Karta žádosti o tajné údaje. Když agent potřebuje klíč, ukáže v chatu kartu, kde hodnotu zadáte do polí formuláře, ne do zprávy, a uloží se jako tajný údaj projektu. Viz Tajné údaje v chatu.
- Nastavení projektu → Tajné údaje, nebo
/secretsv chatu, kde můžete klíče přidat nebo změnit sami. Viz Proměnné prostředí a tajné údaje.
Po změně tajného údaje u publikované aplikace ji znovu publikujte, aby živá aplikace převzala novou hodnotu. Exportované projekty tajné údaje neobsahují, takže je znovu přidejte tam, kde kód spouštíte. Pokud se klíč kdy objeví v chatu, vyměňte ho u poskytovatele.
Pro zbytek bezpečnostní kontroly před spuštěním pokračujte podle bezpečnostního kontrolního seznamu pro aplikace postavené AI. Pokud přidáváte funkce AI, jak používat LLM API se klíčům a nákladům věnuje podrobněji.
Otázky
Je bezpečné dát API klíč do frontendového kódu?
Jen pokud ho poskytovatel navrhl jako veřejný, například veřejný klíč Stripe nebo klíč k mapám omezený na vaši doménu. Každý klíč, který může utrácet peníze nebo číst soukromá data, musí zůstat na serveru, protože cokoli odeslaného do prohlížeče si může kdokoli přečíst.
Co mám udělat, když jsem vložil API klíč do chatu nebo do veřejného repozitáře?
Vyměňte ho: u poskytovatele vytvořte nový klíč, aktualizujte tajné údaje aplikace, znovu publikujte a pak smažte starý klíč. Smazání zprávy nebo commitu nestačí, protože kopie už mohou existovat.
Kde mají být API klíče uložené?
V nastavení proměnných prostředí nebo tajných údajů vašeho hostingu, které čte kód na serveru za běhu. Neměly by být zapsané v zdrojových souborech, commitované do Gitu ani zobrazené na snímcích obrazovky.
Jak poznám, že je můj API klíč na webu vystavený?
Otevřete živý web, v nástrojích pro vývojáře prohlížeče zobrazte zdrojový kód stránky a soubory JavaScriptu a hledejte začátek klíče. Pokud se objeví, je vystavený a je třeba ho přesunout na server a vyměnit.