# Tajný API kľúč v Expo aplikácii: čo treba chrániť

> Verejný kľúč Supabase, serverový secret, premenné Expo: zisti, čo môže byť v tvojej iPhone aplikácii, a otestuj prístupy s dvoma účtami.

Pôvodná stránka: [Tajný API kľúč v Expo aplikácii: čo treba chrániť](https://devoria.fr/sk/blog/tajny-api-kluc-expo-aplikacia)
Autor: [Mehdi Azizi](https://devoria.fr/sk/mehdi-azizi)
Zverejnenie: 2026-09-29
Posledná revízia obsahu: 2026-10-09


## Premenná prostredia nemusí byť tajomstvo

V Expo aplikácii je premenná s prefixom `EXPO_PUBLIC_` určená pre kód aplikácie. Nesmie obsahovať serverový secret. Expo vysvetľuje, že tieto hodnoty sa vkladajú do skompilovaného JavaScriptu a používatelia aplikácie si ich môžu prečítať. Presunúť kľúč do súboru `.env` ho teda neochráni. [Zdroj: premenné prostredia v Expo](https://docs.expo.dev/guides/environment-variables/).

Skôr než AI požiadaš, aby „napojila API“, roztrieď, čo jej zveruješ: adresu služby, kľúč určený na to, aby bol verejný, alebo kľúč, ktorý povoľuje privilegované akcie. Od tohto roztriedenia závisí, kde sa má kód spúšťať.

Nasledujúca tabuľka je návrhová mriežka, nie audit tvojej aplikácie.

| Prvok                                            | Kam ho dať                                    | Čo overiť                                                                               |
| ------------------------------------------------ | --------------------------------------------- | --------------------------------------------------------------------------------------- |
| Verejná adresa backendu                          | Konfigurácia aplikácie                        | Smeruje na správne prostredie.                                                          |
| Kľúč Supabase publishable alebo starší kľúč anon | Aplikácia, ak sú oprávnenia správne nastavené | Pravidlá pre dáta naozaj blokujú prístup k účtu iného používateľa.                      |
| Kľúč Supabase secret alebo service_role          | Iba server                                    | Neobjaví sa v mobilnom bundli ani v logoch dostupných klientovi.                        |
| Tajný kľúč poskytovateľa AI                      | Iba server                                    | Aplikácia volá tvoj server, ktorý pred poskytovateľom skontroluje používateľa a limity. |

Supabase rozlišuje kľúče určené pre klientov a tajné kľúče určené pre dôveryhodné prostredia. Verejný kľúč identifikuje projekt, nenahrádza však oprávnenia k dátam. [Zdroj: API kľúče Supabase](https://supabase.com/docs/guides/getting-started/api-keys).

## Príklad: fiktívna aplikácia na čitateľský denník

Predstav si aplikáciu, v ktorej si Lea a Sami ukladajú svoje knihy a súkromné poznámky. Tento príklad slúži na prípravu testov. Nepopisuje výsledky získané na aplikácii Devoria.

Bežný postup vyzerá v poriadku: Lea sa prihlási a vidí svoje poznámky. To však ešte neodpovedá na dôležitú otázku: odmietne server Lein požiadavok na Samiho poznámku?

Filter v rozhraní, napríklad „zobraziť poznámky prihláseného používateľa“, zlepší zobrazenie. Autorizácia sa však musí uplatňovať aj na strane dát. V Supabase umožňujú pravidlá Row Level Security obmedziť dostupné riadky podľa session. Supabase odporúča zapnúť ich pre tabuľky vystavené cez API a vysvetľuje politiky pre čítanie a zápis. [Zdroj: Row Level Security](https://supabase.com/docs/guides/database/postgres/row-level-security).

Vo vlastnom testovacom projekte priraď každú poznámku jej vlastníkovi a zvlášť urči, kto ju môže čítať, vytvoriť, upraviť a zmazať. Skontroluj aj súbory: ochrana riadku v databáze ešte nedokazuje, že obrázok je súkromný.

## Test, ktorý spustíš s dvoma testovacími účtami

Priprav si dva účty, ktoré máš pod kontrolou, v každom inú knihu a krátku, ľahko rozpoznateľnú poznámku. Používaj fiktívne dáta v povolenom testovacom prostredí.

1. **Prečítať vlastnú poznámku.** Účet A nájde poznámku A.
2. **Prečítať poznámku B z účtu A.** Požiadavka neodhalí jej súkromný obsah.
3. **Upraviť poznámku B z účtu A.** Server odmietne, poznámka B zostane nezmenená.
4. **Vytvoriť niečo v mene B z účtu A.** Server toto priradenie odmietne.
5. **Čítať bez session.** Nevráti sa žiadny súkromný obsah.
6. **Otvoriť súkromný súbor B z účtu A.** Súbor nie je dostupný.

Zaznamenaj skutočný výsledok, testovanú verziu a prípadnú chybu. „Pravidlá sú zapnuté“ nie je výsledok testu. Ako základ na uchovanie týchto dôkazov môže poslúžiť [testovacia mriežka dostupná v zdrojoch](https://devoria.fr/sk/resources).

## Plateného volanie veď cez svoj server

Pri funkcii, ktorá zhrnie knihu pomocou [AI API](https://devoria.fr/sk/blog/guideline-5-1-2-ai-tretich-stran-att-zdielanie-dat), môže postup vyzerať takto: aplikácia → tvoj server → poskytovateľ → tvoj server → aplikácia. Tajný kľúč zostáva na serveri. Samotná táto architektúra nestačí: aj prístup k serveru musí byť kontrolovaný.

Vo fiktívnom príklade musí server okrem iného overiť session, overiť, že kniha patrí danej osobe, obmedziť opakované požiadavky a vrátiť zrozumiteľnú chybu, ak poskytovateľ neodpovedá. Klient sám nerozhoduje o tom, že používateľ má platený prístup.

Priprav si štyri testy: neprihlásený používateľ, kniha iného účtu, dosiahnutý limit a nedostupný poskytovateľ. Posledný ti umožní overiť, že aplikácia opustí stav načítavania bez straty zadaného textu.

## Čo môžeš zadať svojmu AI asistentovi na kódovanie

Tu je zadanie na revíziu, ktoré si prispôsobíš svojmu repozitáru. Nevkladaj doň svoje tajné hodnoty:

> Vypíš premenné, ktoré používa mobilný kód a server, a zobraz iba ich názvy. Identifikuj privilegované volania na strane klienta. Pri súkromných dátach popíš kontroly čítania a zápisu, potom navrhni test s dvoma testovacími účtami. Bez schválenia nerob žiadnu rotáciu kľúčov ani zmenu v produkcii.

Odpoveď si prečítaj spolu s príslušným kódom. Asistent môže odhaliť nekonzistentnosť, jeho odpoveď však nenahrádza spustenie testov. Návod [vytvoriť aplikáciu s Claude Code](https://devoria.fr/sk/blog/vytvorit-aplikaciu-claude-code-navod-iphone) vysvetľuje, ako túto prácu rozdeliť.

## Skôr než budeš pokračovať v aplikácii

Mal by si vedieť jednoducho vysvetliť tri veci: ktoré hodnoty sú verejné, ktoré operácie idú cez server a ktoré testy ukazujú, že jeden účet nevidí dáta iného. Ak je niektorý z týchto bodov nejasný, vyjasni si ho skôr, než pridáš ďalšie funkcie.

Stránka [vytvoriť iPhone aplikáciu](https://devoria.fr/sk/expertise/vytvorit-aplikaciu-pre-iphone) zasadzuje tento krok do celého projektu. Ak chceš postupovať po poriadku, [iOS Kit](https://devoria.fr/sk/kits/ios) ponúka postup v štyroch krokoch a štartovací kód, ktorý už obsahuje účty aj AI. Ak nevieš, ktorým krokom pokračovať, [bezplatná diagnostika](https://devoria.fr/sk/diagnostic) dá tvoj projekt do poriadku a pošle ti môj checklist proti zamietnutiu od Apple.

## Často kladené otázky

### Kam dať tajný API kľúč v Expo aplikácii?

Na svoj server, nikdy nie do aplikácie. Kľúč Supabase secret alebo service_role, rovnako ako tajný kľúč poskytovateľa AI, musí zostať iba na strane servera. Aplikácia volá tvoj server, ktorý skontroluje používateľa a limity a až potom zavolá poskytovateľa. Over, že sa žiadny z týchto kľúčov neobjaví v mobilnom bundli ani v logoch dostupných klientovi.

### Ochráni súbor .env môj API kľúč v Expo?

Sám osebe nie. Premenná s prefixom `EXPO_PUBLIC_` je určená pre kód aplikácie a nesmie obsahovať serverový secret. Expo vysvetľuje, že tieto hodnoty sa vkladajú do skompilovaného JavaScriptu a používatelia aplikácie si ich môžu prečítať. Presunúť kľúč do súboru `.env` ho teda neochráni.

### Aký je rozdiel medzi verejným a tajným API kľúčom?

Verejný kľúč je určený na to, aby bol v aplikácii: identifikuje projekt, ale nenahrádza oprávnenia k dátam. Tajný kľúč povoľuje privilegované akcie a patrí iba do dôveryhodných prostredí. V Supabase môže kľúč publishable, prípadne starší kľúč anon, zostať v aplikácii, ak sú oprávnenia správne nastavené. Kľúče secret a service_role zostávajú na serveri.

### Ako volať AI API z Expo aplikácie bez odhalenia kľúča?

Veď volanie cez svoj server: aplikácia zavolá server, ten zavolá poskytovateľa a odpoveď vráti aplikácii. Tajný kľúč zostáva na serveri. Server musí tiež overiť session, obmedziť opakované požiadavky a vrátiť zrozumiteľnú chybu, ak poskytovateľ neodpovedá. Klient sám nerozhoduje o tom, že používateľ má platený prístup.

### Ako overiť, že každý používateľ vidí iba svoje dáta?

Priprav si dva testovacie účty, ktoré máš pod kontrolou, v každom s ľahko rozpoznateľnou poznámkou. Z účtu A skús čítať, upravovať a vytvárať v mene účtu B a potom otvoriť súkromný súbor B. Urob testy aj bez session: každá požiadavka musí byť odmietnutá alebo nesmie nič odhaliť. Zaznamenaj skutočný výsledok, pretože „pravidlá sú zapnuté“ nie je výsledok testu.

### Ako požiadať AI, aby skontrolovala kľúče mojej aplikácie?

Požiadaj ju, aby vypísala premenné mobilného kódu a servera a zobrazila iba ich názvy, bez vloženia tvojich tajných hodnôt. Požiadaj ju tiež, aby identifikovala privilegované volania na strane klienta a navrhla test s dvoma testovacími účtami. Zakáž akúkoľvek rotáciu kľúčov alebo zmenu v produkcii bez schválenia. Jej odpoveď nenahrádza spustenie testov.


## Tvoj projekt

[iOS Kit](https://devoria.fr/sk/kits/ios): Vytvor iPhone appku s Claude Code: štartovací kód mojich appiek, skills, ktoré kontrolujú jeho prácu, a Apple Review Kit, App Store Screenshots Kit a ASO Kit. 129,99 €.
