Güvenlik

Güvenlik, sade biçimde

MyFina ev muhasebesidir. Finansal veri özeldir — pazarlama lafı olmadan nasıl korunduğunu gösteriyoruz.

Önemli sorulara üç kısa cevap

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.

Nerede saklanıyor

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.

Nasıl siliniyor

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

Kimlik doğrulama

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.

«At rest» şifreleme

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.

Kullanıcı verisi izolasyonu

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.

Oturumlar ve revocation

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.

GDPR ve gizlilik

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.

Denetim ve gözlemlenebilirlik

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

  • Verilerinizi üçüncü taraflara satmıyoruz veya paylaşmıyoruz. Gelir kaynağımız Pro abonelik, reklam değil.
  • Kullanıcı sayfalarında web analitiği veya tracker çalıştırmıyoruz — Google Analytics, Mixpanel, Hotjar yok.
  • Şifreleri açık metin olarak saklamıyoruz — 12 turlu bcrypt, backdoor-recovery yok.
  • Bakiyenizi veya işlemlerinizi partner sitelere gömmüyoruz — widget yok, sızdıracak bir şey yok.

Banka senkronizasyonu — tam olarak ne paylaşılıyor

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.

Kendiniz doğrulayabilecekleriniz

Yukarıdaki her iddia kod ve API üzerinden denetlenebilir.

  • Şifreleme: src/lib/crypto.ts (AES-256-GCM, randomBytes IV, auth tag).
  • Kimlik doğrulama: src/auth.ts, src/lib/auth/rate-limit.ts.
  • Yetkilendirme: src/lib/auth/ownership.ts (assertCanAccessAccount).
  • Açık API: https://app.my-fina.com/api/openapi (OpenAPI 3.1).
  • Health endpoint: https://app.my-fina.com/api/health (genel liveness).

Güvenlik bildirimlerini alın

CVE'ler, güvenlik yamaları ve tehdit modeli değişiklikleri hakkında haberdar olmak için abone olun. Pazarlama yok.

Pro hazır olduğunda haber ver

Tek bir e-posta. Spam yok. Tek tıkla çıkış.

GDPR uyumlu · veri AB'de işlenirSon güncelleme: 3 Haziran 2026