Bezpečnost i když „jen prototypuji“
Proč přemýšlím o bezpečnosti už od začátku — i když stavím malé interní nástroje — a jak mi v tom pomáhá architektura Lovable.
Bezpečnost i když „jen prototypuji“
Když stavíte nový produkt — zvlášť na začátku a sami — je velmi snadné bezpečnost odkládat.
„Používám to jen já.“
„Vyřeším to později.“
„Teď jen experimentuji.“
Problém je, že bezpečnost není něco, co se přidává později. Je to něco, co buď navrhnete hned — nebo nechtěně vynecháte už na začátku.
Tohle je jednoduchý mentální model, podle kterého stavím své nástroje.
Frontend není aplikace
Cokoliv běží v prohlížeči je veřejné, prohlížitelné a upravitelné.
To znamená, že frontend nikdy nesmí obsahovat:
- Tajné klíče nebo API klíče
- Logiku oprávnění
- Validační pravidla
- Byznysová rozhodnutí
Frontend má pouze:
- Zobrazovat data
- Sbírat vstupy od uživatele
- Odesílat požadavky
Veškerá důležitá logika patří jinam.
Backend je místo, kde vzniká důvěra
Veškerá autentizace, validace a byznys logika musí běžet na serveru — v Edge Functions.
To vytváří:
- Jedno místo pro kontrolu oprávnění
- Jedno místo pro validaci dat
- Jedno místo pro citlivé operace
Díky tomu je systém přehlednější a bezpečnější už ze své podstaty.
Row Level Security definuje vlastnictví dat
Row Level Security není volitelná funkce.
Bez RLS:
- Uživatelé vidí data, která jim nepatří
- Oddělení dat mezi firmami a uživateli nefunguje
- Jedna chyba může odhalit celé tabulky
RLS definuje:
- Kdo co vidí
- Kdo co může měnit
- Jak jsou odděleni uživatelé, týmy a organizace
Pokud RLS chybí nebo je špatně nastavené, je systém špatně — i když všechno ostatní vypadá v pořádku.
Autentizace je infrastruktura, ne UI
Přihlašovací obrazovky jsou UX.
Autentizace sama o sobě je infrastruktura.
UI reaguje na stav přihlášení, ale nikdy nerozhoduje o oprávněních.
Veškeré kontroly probíhají na serveru.
Tohle oddělení je zásadní.
Interní neznamená bezpečné
I interní nástroje:
- Mohou být špatně nastavené
- Mohou být omylem publikované
- Mohou se časem stát reálným produktem
Proto by i interní nástroje měly mít:
- Zapnutou autentizaci
- Nastavené RLS
- Žádné tajné klíče ve frontendu
Nestojí to skoro nic navíc — a do budoucna to šetří obrovské problémy.
Závěrem
Bezpečnost není checklist před spuštěním.
Je to strukturální rozhodnutí na začátku.
Rychlost není v tom, že strukturu vynecháte.
Rychlost je v tom, že zvolíte strukturu, která se nezhroutí, když začnete růst.