Bezpečnost

Bezpečnost srozumitelně

MyFina je domácí účetnictví. Finanční data jsou výjimečná — ukazujeme, jak jsou chráněna, bez marketingové vaty.

Tři krátké odpovědi na hlavní otázky

Jak se šifruje

TLS 1.3 in transit (Let's Encrypt). Externí API klíče, bankovní tokeny a brokerské secrety — AES-256-GCM s unikátním IV na záznam. Hesla — bcrypt (12 kol). Šifrovací klíč žije v env, ne v DB.

Kde se ukládá

PostgreSQL 16 v managed instanci u Hetzneru (Německo, EU). Izolovaná Docker síť, žádná externí připojení k DB. Zálohy — denní, šifrované před uploadem, retence 30 dnů.

Jak se maže

Hard-delete účtu v jednom kroku: kaskádně se odstraní transakce, účty, kategorie, měny, tokeny. Žádné soft-delete tabulky, žádný archiv „pro jistotu“. Marketingové leady na stejný email — samostatný erase-hook (GDPR čl. 17).

Šest pilířů obrany

Autentizace

NextAuth.js v5 na JWT, hesla hashována pomocí bcrypt. Login-throttling 5 pokusů / 15 min na identifikátor a 20 / 15 min na IP. OAuth Google volitelný. Reset hesla — 32-bytový token, v DB jen SHA-256.

Šifrování «at rest»

Externí API klíče (banky, Resend, Anthropic) a brokerské secrety jsou šifrovány AES-256-GCM. Klíč nikdy neopouští server. Per-connection webhook-secrety — 32-byte hex pro každou bankovní integraci.

Izolace dat uživatele

Každá UPDATE/DELETE operace filtruje podle `userId`. IDOR-ochrana je centralizovaná v `assertCanAccessAccount/Category` — pokus o přístup k cizímu účtu vrátí 403, ne 404. Sdílené rodinné účty fungují přes role OWNER/MEMBER/VIEWER.

Relace a revocation

JWT s inkrementálním `session_version`. Změna hesla, zablokování uživatele nebo změna role invalidují všechny aktivní relace. Refresh-tokeny mobilního API se rotují při každém obnovení.

GDPR a soukromí

Hard-delete účtu odstraní všechny transakce, účty a kategorie kaskádně v jedné transakci. Export dat — CSV/XLSX/PDF jedním kliknutím. Cookie consent se třemi kategoriemi (essential / functional / analytics), společný pro web i aplikaci: GA4 běží až po souhlasu, reklamní profilování neprovádíme.

Audit a pozorovatelnost

Všechny admin akce a citlivé uživatelské operace se zapisují do `audit_log` s IP, user-agent a source. Logy pokusů o přihlášení se uchovávají 30 dní. Stripe webhook události mají vlastní idempotency-žurnál pro bezpečný replay.

Co NEděláme

  • Neprodáváme ani nesdílíme vaše data se třetími stranami. Zdroj příjmů — Pro předplatné, ne reklama.
  • Nepoužíváme reklamní trackery ani profilování — žádný Facebook Pixel, Mixpanel, Hotjar. Google Analytics 4 běží až po vašem souhlasu.
  • Neukládáme hesla v otevřené podobě — bcrypt s 12 koly, bez backdoor-recovery.
  • Nezobrazujeme zůstatek ani transakce na partnerských stránkách — žádný embed-widget, není co leakovat.

Bankovní synchronizace — co se přesně sdílí

Pokud připojíte Monobank nebo PSD2 banku přes GoCardless, dostáváme jen to, co je potřeba k synchronizaci transakcí: odchozí platby, příchozí převody, zůstatky účtů. Žádná osobní data banky (pas, foto, biometrie). API-token banky se ukládá zašifrovaný AES-256-GCM; přístup můžete odebrat jedním kliknutím v Nastavení → Banky. GoCardless souhlas vyprší každých 90 dní podle PSD2 — upozorníme vás 7 dní předem.

Časté otázky o bezpečnosti

Kde fyzicky leží servery a kdo vlastní data?

Servery jsou v datacentru Hetzner ve Frankfurtu, Německo (EU). Správcem dat je vlastník MyFina — žádní agregátorští prostředníci, žádní US-cloudoví poskytovatelé. Kompletní seznam subprocesorů je na /security/subprocessors.

Co se stane s mými daty, pokud MyFina skončí?

Minimálně 30 dní před uzavřením vám pošleme email s upozorněním a tlačítkem „Stáhnout vše" ve formátech CSV / XLSX / PDF. Po grace-období bude databáze zničena. Je to provozní závazek v podmínkách služby, ne marketingový slib.

Mohu úplně smazat svůj účet?

Ano. Nastavení → Data → Smazat účet je hard-delete v jedné DB transakci: kaskádovitě se mažou transakce, účty, kategorie, tokeny a marketingové leady ke stejnému emailu. Žádný soft-delete, žádné archivy „pro jistotu". Plně v souladu s GDPR čl. 17 („právo být zapomenut").

Kdo uvnitř MyFiny vidí má finanční data?

Nikdo z „personálu" nemá rutinní přístup k vašim finančním řádkům. Vlastník se dostane k databázi pouze během bezpečnostního incidentu nebo na vaši explicitní žádost přes support. Všechny administrátorské akce se zaznamenávají do audit_log s IP a user-agentem.

Pokud mi ukradnou notebook — ochrání mě heslo MyFiny?

Sezení v prohlížeči je JWT s TTL, ne „přihlášen navždy". Pokud je váš aktuální prohlížeč odhlášený, nikdo se bez hesla nepřihlásí. Pokud sezení běží — doporučujeme používat lock-screen OS a/nebo změnit heslo z jakéhokoli jiného zařízení (to okamžitě zneplatní všechny aktivní sezení).

Jste napojeni na Google Analytics, Facebook Pixel nebo jiné trackery?

Facebook Pixel, Mixpanel ani Hotjar nemáme. Google Analytics 4 ano: jeden sdílený kontejner GTM běží na webu i v aplikaci. Spustí se až po vašem souhlasu v cookie banneru (kategorie analytics, standardně vypnutá) a slouží k webové statistice a měření konverzí Google Ads. Personalizace reklamy je vypnutá.

Co si můžete sami ověřit

Každé tvrzení výše je auditovatelné v kódu a API.

  • Šifrování: src/lib/crypto.ts (AES-256-GCM, randomBytes IV, auth tag).
  • Autentizace: src/auth.ts, src/lib/auth/rate-limit.ts.
  • Autorizace: src/lib/auth/ownership.ts (assertCanAccessAccount).
  • Otevřené API: https://app.my-fina.com/api/openapi (OpenAPI 3.1).
  • Health endpoint: https://app.my-fina.com/api/health (veřejný liveness).

Dostávat bezpečnostní upozornění

Přihlaste se k odběru CVE, bezpečnostních záplat a změn modelu hrozeb. Žádný marketing.

Dejte mi vědět, až bude Pro k dispozici

Jeden e-mail. Žádný spam. Odhlášení jedním kliknutím.

GDPR-compliant · data zpracována v EUPoslední aktualizace: 3. června 2026