Nasıl şifreleniyor
İletimde TLS 1.3 (Let's Encrypt). Harici API anahtarları, banka token'ları ve broker sırları — kayıt başına benzersiz IV ile AES-256-GCM. Şifreler — bcrypt (12 tur). Şifreleme anahtarı veritabanında değil, env'de yaşar.
Güvenlik
MyFina ev muhasebesidir. Finansal veri özeldir — pazarlama lafı olmadan nasıl korunduğunu gösteriyoruz.
Önemli sorulara üç kısa cevap
İletimde TLS 1.3 (Let's Encrypt). Harici API anahtarları, banka token'ları ve broker sırları — kayıt başına benzersiz IV ile AES-256-GCM. Şifreler — bcrypt (12 tur). Şifreleme anahtarı veritabanında değil, env'de yaşar.
PostgreSQL 16, Hetzner'deki (Almanya, AB) yönetilen örnekte. İzole Docker ağı, veritabanına dış bağlantı yok. Yedekler — günlük, yüklemeden önce şifrelenir, 30 gün saklama.
Hesap hard-delete tek seferde: işlemler, hesaplar, kategoriler, para birimleri, token'lar art arda kaldırılır. Soft-delete tabloları yok, «ne olur ne olmaz» arşivi yok. Aynı e-postaya bağlı pazarlama lead'leri — ayrı erase-hook (GDPR Mad. 17).
Savunmanın altı sütunu
JWT üzerinde NextAuth.js v5, şifreler bcrypt ile hash'lenir. Login throttling — identifier başına 5 deneme / 15 dk ve IP başına 20 / 15 dk. İsteğe bağlı Google OAuth. Şifre sıfırlama 32-byte token kullanır; veritabanında yalnızca SHA-256'sı saklanır.
Harici API anahtarları (bankalar, Resend, Anthropic) ve broker sırları AES-256-GCM ile şifrelenir. Anahtar sunucudan asla çıkmaz. Her banka bağlantısı kendi 32-byte hex webhook sırrını taşır.
Her UPDATE/DELETE `userId`'ye göre filtreler. IDOR koruması `assertCanAccessAccount/Category` içinde merkezileştirilmiştir — başkasının hesabına erişim 403 döner, 404 değil. Paylaşılan aile hesapları açık OWNER/MEMBER/VIEWER rolleri kullanır.
Artan `session_version`'lı JWT. Şifre değişikliği, hesap engelleme veya rol değişikliği tüm aktif oturumları geçersiz kılar. Mobil API refresh token'ları her yenilemede rotasyona girer.
Hesap hard-delete tüm işlemleri, hesapları ve kategorileri tek bir işlemde art arda kaldırır. Veri ihracı — tek tıkla CSV/XLSX/PDF. İki kategorili (essential / functional) çerez onayı, analitik yok, tracker yok.
Tüm admin eylemleri ve hassas kullanıcı işlemleri IP, user-agent ve source ile `audit_log`'a yazılır. Login deneme logları 30 gün tutulur. Stripe webhook olayları, hata durumunda güvenli replay için ayrı bir idempotency journal'ında oturur.
Yapmadığımız şeyler
Monobank veya GoCardless üzerinden bir PSD2 bankası bağladığınızda, yalnızca işlemleri senkronize etmek için gerekenleri alırız: giden ödemeler, gelen transferler, hesap bakiyeleri. Banka tarafında hiçbir kişisel veri yok (pasaport, fotoğraf, biyometri). Banka API token'ı AES-256-GCM ile şifrelenmiş saklanır; Ayarlar → Bankalar üzerinden tek tıkla erişimi iptal edebilirsiniz. GoCardless onayı PSD2 gereği her 90 günde bir sona erer — 7 gün önceden hatırlatırız.
Daha derin ayrıntılar
Verilerinizi işleyen üçüncü taraf hizmetlerin tam listesi: Hetzner (hosting), Stripe (faturalandırma), Resend (e-posta), Anthropic (AI, DRAFT), GoCardless (PSD2), Monobank API, FCM.
Listeyi açÖzellik bazlı matris: ne saklanıyor, ne kadar süreyle, nasıl siliniyor. GDPR Mad. 15/17/20 akışı ve varlık başına saklama pencereleri.
Matrisi açKendiniz doğrulayabilecekleriniz
Yukarıdaki her iddia kod ve API üzerinden denetlenebilir.
src/lib/crypto.ts (AES-256-GCM, randomBytes IV, auth tag).src/auth.ts, src/lib/auth/rate-limit.ts.src/lib/auth/ownership.ts (assertCanAccessAccount).https://app.my-fina.com/api/openapi (OpenAPI 3.1).https://app.my-fina.com/api/health (genel liveness).CVE'ler, güvenlik yamaları ve tehdit modeli değişiklikleri hakkında haberdar olmak için abone olun. Pazarlama yok.