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.