Preskočiť na obsah

Bezpečnostný checklist pre Xano

Osvedčené bezpečnostné postupy v Xano

Xano poskytuje infraštruktúru aplikácie. Vy zodpovedáte za nastavenie autentifikácie, oprávnení a logiky, ktorá chráni vaše dáta.

Pri bezpečnostnom audite Xano hľadáme bezpečnostné chyby vo vašej aplikácii. Môžeme ho spojiť s auditom WeWebu.


Bezpečnosť potrebuje viac kontrol

  1. Identita Kto posiela požiadavku?
  2. Oprávnenia Môže táto osoba vykonať danú akciu?
  3. Rozsah dát Ku ktorým záznamom má požiadavka prístup?
Tieto kontroly nastavte na backende. Skryté tlačidlo v rozhraní nie je pravidlom prístupu.

1. Autentifikácia

Autentifikácia určí, kto posiela požiadavku. Platný token je len prvá kontrola. Backend musí ešte rozhodnúť, ktoré akcie a záznamy smie tento človek používať.

  • Neodkladajte to: Súkromné endpointy zabezpečte od začiatku.
  • Ako to nastaviť: Na každom súkromnom endpointe vyžadujte prihlásenie a overte požiadavku bez tokenu. Tvorbu tokenov a ochranu endpointov vysvetľuje návod Xano na autentifikáciu.

2. Nastavenia CORS

CORS (Cross-Origin Resource Sharing) určuje, či prehliadač dovolí stránke prečítať odpoveď z iného pôvodu. Nenahrádza autentifikáciu API a neblokuje každú požiadavku medzi doménami. Rozdiel vysvetľuje dokumentácia MDN.

  • Prečo na tom záleží: V hlavičke Access-Control-Allow-Origin nastavte frontendy, ktoré smú čítať odpovede v prehliadači. Iní klienti môžu endpoint stále volať, preto potrebuje autorizáciu na serveri.
  • Poznámka: CORS sa týka len požiadaviek z prehliadača. Volania zo servera (napríklad z Xano do Xano) neobmedzuje.
  • Ako to nastaviť: Otvorte svoju API Group -> More options -> CORS Management.

3. UUID vs. celočíselné ID

Náhodne vytvorené UUID (Universally Unique Identifier) sa odhaduje ťažšie než sekvenčné celočíselné ID (integer).

  • Prínos pre bezpečnosť: Sekvenčné ID sa ľahko skúšajú jedno po druhom. Náhodné UUID sťažuje hádanie, ale bez kontroly oprávnení záznam neochráni ani jeden formát. OWASP odporúča overiť prístup ku každému požadovanému objektu.
  • Čo za to zaplatíte:
    • Úložisko: UUID v PostgreSQL zaberá 16 bajtov; veľkosť celého čísla závisí od zvoleného typu.
    • Výkon: Pri veľkých tabuľkách (stovky miliónov záznamov) môžu byť indexy nad UUID o niečo pomalšie.
    • Úložisko v Xano: Väčšie indexy zaberú väčšiu časť vašej kvóty „Database SSD Storage“.

4. ID používateľa v API

Pri úprave vlastného profilu určite cieľového používateľa z overeného prihlásenia. Administrátorská akcia, ktorá prijíma ID iného používateľa, potrebuje samostatnú kontrolu oprávnení.

  • Zraniteľnosť: Ak API dôveruje vstupnému user_id bez kontroly oprávnení, používateľ so zlým úmyslom ho môže prepísať a meniť cudzie dáta.
  • Riešenie: Používateľa, ktorý posiela požiadavku, vždy identifikujte cez auth.id (ID uložené v zabezpečenom autentifikačnom tokene).

Úprava vlastného profilu

  1. Overená požiadavka
  2. Načítajte auth.id
  3. Vyberte vlastný záznam
  4. Uložte povolené zmeny
V tomto postupe pre vlastný profil preberte identitu z prihlásenia, nie z parametra user_id od volajúceho.

5. Sila hesla na backende

Pravidlá hesiel vynucujte na backende pri každom vytvorení alebo zmene hesla. Podporujte dlhé heslové frázy a správcov hesiel. Ak to vaše prihlasovanie umožňuje, odmietajte bežné alebo uniknuté heslá. Samotné povinné špeciálne znaky nenahradia dĺžku, obmedzenie pokusov a viacfaktorové overenie. Podrobnosti uvádza návod OWASP na autentifikáciu.


6. Jednotné chybové hlášky

Podľa odporúčaní OWASP (Open Web Application Security Project) by prihlásenie ani obnova hesla nemali prezradiť, či konkrétna e-mailová adresa vo vašom systéme existuje.

  • Zlý príklad: „E-mail sa nenašiel“ alebo „Nesprávne heslo“ (z týchto dvoch hlášok útočník spozná, či e-mail existuje).
  • Dobrý príklad: „Nesprávny e-mail alebo heslo“.

Pri obnove hesla použite napríklad „Ak účet existuje, pošleme pokyny na obnovenie hesla.“ Rovnakú informáciu nesmú prezradiť ani stavové kódy alebo výrazne odlišný čas odpovede.

  • Prečo: Všeobecné hlášky obmedzujú informácie využiteľné pri tzv. „user enumeration“. Pri nej útočník skúša zoznamy e-mailov a zisťuje, kto má na vašej platforme účet.

Čo prezradí chyba prihlásenia

Detail o účteVšeobecná odpoveď
Hlásenie E-mail sa nenašiel / nesprávne heslo Neplatný e-mail alebo heslo
Prezradená informácia Či účet existuje Len to, že prihlásenie zlyhalo
Používajte jednotné odpovede, aby prihlásenie a obnova hesla neodhaľovali zoznam účtov.

7. Prístup k dokumentácii Swagger

Xano automaticky generuje dokumentáciu Swagger (interaktívnu mapu vášho API). Rozhodnite, či ide o verejné alebo interné API. Internú dokumentáciu podľa potreby obmedzte, no každý endpoint chráňte aj vtedy, keď je jeho dokumentácia skrytá.

  • Nastavenie: Prístup k dokumentácii Swagger obmedzíte v API Group Settings.

8. Riadenie prístupu podľa rolí (RBAC)

Ak má aplikácia viac používateľských rolí (napr. admin, manažér, používateľ), potrebuje kontrolovať oprávnenia pri každej požiadavke.

Kam patria kontroly oprávnení

Frontend môže pre prehľadnosť skryť nedostupné akcie. Skutočné pravidlo musí pri každej požiadavke vynucovať backend.

Načítanie rolí z databázy poskytne aktuálne údaje. Cez Xano token extras môžete prenášať napríklad rolu alebo organizáciu a ušetriť niektoré dopyty. Token však zachytáva stav pri vydaní: zmena roly v databáze už vydaný token neprepíše. Podobne môžu zastarať aj oprávnenia v cache.

Dĺžku platnosti, obnovovanie a zneplatňovanie prispôsobte tomu, ako rýchlo musí odobratie prístupu začať platiť. Cache oddeľte podľa používateľa a organizácie. Okrem roly overujte aj prístup ku konkrétnemu záznamu.

Oprávnenia sa musia dať aj zmeniť

Prístupové pravidlá
  1. Udeliť prístup
  2. Kontrolovať požiadavky
  3. Zmeniť alebo odobrať
  4. Obnoviť či zneplatniť
Testujte aj s tokenom vydaným pred odobratím prístupu. Zmena musí začať platiť v čase, ktorý aplikácia sľubuje.

Chcete sa poradiť o svojom projekte?

Dohodnite si hovor a spolu prejdeme vaše možnosti.

JurajCEO, QikBuild

Z hovoru si odnesiete

  • Návrh, čo by sme postavili ako prvé
  • Orientačnú cenu
  • Odpoveď, či sa vám oplatí softvér na mieru
Dohodnúť 30-minútový hovor

Alebo napíšte na hello@qikbuild.com