Қауіпсіздік

Қауіпсіздік — ашық әрі қарапайым

MyFina — үй бухгалтериясы. Қаржы деректері ерекше — оны қалай қорғайтынымызды маркетинг сөздерсіз көрсетеміз.

Басты сұрақтарға үш қысқа жауап

Қалай шифрленеді

Тасымалдау кезінде TLS 1.3 (Let's Encrypt). Сыртқы API кілттері, банк токендері және брокер құпиялары — әр жазба үшін бірегей IV-мен AES-256-GCM. Парольдер — bcrypt (12 раунд). Шифрлеу кілті дерекқорда емес, env-те тұрады.

Қайда сақталады

Hetzner-дегі (Германия, ЕО) managed данада PostgreSQL 16. Оқшауланған Docker желісі, дерекқорға сыртқы байланыс жоқ. Сақтық көшірмелер — күн сайын, жүктеу алдында шифрленеді, 30 күн сақталады.

Қалай жойылады

Тіркелгінің hard-delete бір қадамда: транзакциялар, шоттар, санаттар, валюталар, токендер каскадпен жойылады. Soft-delete кестелері жоқ, «бір кездейсоқтыққа» арналған архив жоқ. Сол email бойынша маркетинг лидтері — бөлек erase-hook (GDPR 17-бап).

Қорғаныстың алты бағанасы

Аутентификация

JWT негізіндегі NextAuth.js v5, парольдер bcrypt-пен хештеледі. Login throttling — идентификатор бойынша 5 әрекет / 15 мин және IP бойынша 20 / 15 мин. Қалау бойынша Google OAuth. Парольді қалпына келтіру 32-байттық токенмен жүреді; дерекқорда тек оның SHA-256 хеші ғана сақталады.

«At rest» шифрлеу

Сыртқы API кілттері (банктер, Resend, Anthropic) және брокер құпиялары AES-256-GCM арқылы шифрленеді. Кілт серверден ешқашан кетпейді. Әрбір банк байланысының өзіндік 32-байттық hex webhook құпиясы бар.

Пайдаланушы деректерінің оқшаулануы

Әрбір UPDATE/DELETE операциясы `userId` бойынша сүзіледі. IDOR қорғанысы `assertCanAccessAccount/Category` ішінде орталықтандырылған — басқа біреудің шотына кіру 403 қайтарады, 404 емес. Ортақ отбасылық шоттар нақты OWNER/MEMBER/VIEWER рөлдерін пайдаланады.

Сессиялар мен revocation

Артып отыратын `session_version` бар JWT. Пароль өзгерту, тіркелгіні бұғаттау немесе рөлді ауыстыру — барлық белсенді сессияларды жарамсыз етеді. Mobile-API refresh токендері әр жаңартуда ротацияланады.

GDPR және құпиялылық

Тіркелгінің hard-delete барлық транзакциялар, шоттар мен санаттарды бір транзакцияда каскадпен жояды. Деректерді экспорттау — CSV/XLSX/PDF бір батырмамен. Cookie consent екі санатпен (essential / functional), аналитика жоқ, трекерлер жоқ.

Аудит және бақыланушылық

Барлық админ әрекеттері мен пайдаланушының сезімтал операциялары IP, user-agent және source-пен бірге `audit_log`-қа жазылады. Login әрекеттерінің логтары 30 күн сақталады. Stripe webhook оқиғалары сәтсіздік кезінде қауіпсіз replay үшін бөлек idempotency журналында тұрады.

Біз жасамайтын нәрселер

  • Сіздің деректеріңізді үшінші тұлғаларға сатпаймыз және бермейміз. Кіріс көзіміз — Pro жазылым, жарнама емес.
  • Пайдаланушы беттерінде веб-аналитика мен трекерлерді іске қоспаймыз — Google Analytics, Mixpanel, Hotjar жоқ.
  • Парольдерді ашық түрде сақтамаймыз — 12 раундтық bcrypt, backdoor-recovery жоқ.
  • Сіздің теңгеріміңіз бен транзакцияларыңызды әріптес сайттарға ендірмейміз — виджет жоқ, ағып кететін ештеңе жоқ.

Банк синхронизациясы — нақты не бөлісіледі

Егер сіз Monobank немесе GoCardless арқылы PSD2 банкін қоссаңыз, біз тек транзакцияларды синхрондау үшін қажеттіні аламыз: шығыс төлемдер, кіріс аударымдар, шот қалдықтары. Банк жағында ешқандай жеке деректер жоқ (паспорт, фото, биометрия). Банктің API токені AES-256-GCM арқылы шифрленген түрде сақталады; қол жетімділікті Параметрлер → Банктер бөлімінен бір батырмамен жоюға болады. GoCardless келісімі PSD2 талабы бойынша әр 90 күн сайын аяқталады — біз 7 күн бұрын ескертеміз.

Сіз өзіңіз тексере алатын нәрселер

Жоғарыдағы әрбір тұжырым код пен API арқылы тексерілуге жатады.

  • Шифрлеу: 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).
  • Ашық API: https://app.my-fina.com/api/openapi (OpenAPI 3.1).
  • Health endpoint: https://app.my-fina.com/api/health (көпшілікке ашық liveness).

Қауіпсіздік туралы хабарландыруларды алу

CVE-лер, қауіпсіздік патчтары және қауіп моделінің өзгерістері туралы білу үшін жазылыңыз. Маркетинг жоқ.

Pro қолжетімді болғанда хабарлау

Бір email. Спам жоқ. Бір шертумен бас тарту.

GDPR-ге сай · деректер ЕО-да өңделедіСоңғы жаңарту: 2026 жылғы 3 маусым