Қалай шифрленеді
Тасымалдау кезінде TLS 1.3 (Let's Encrypt). Сыртқы API кілттері, банк токендері және брокер құпиялары — әр жазба үшін бірегей IV-мен AES-256-GCM. Парольдер — bcrypt (12 раунд). Шифрлеу кілті дерекқорда емес, env-те тұрады.
Қауіпсіздік
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 хеші ғана сақталады.
Сыртқы API кілттері (банктер, Resend, Anthropic) және брокер құпиялары AES-256-GCM арқылы шифрленеді. Кілт серверден ешқашан кетпейді. Әрбір банк байланысының өзіндік 32-байттық hex webhook құпиясы бар.
Әрбір UPDATE/DELETE операциясы `userId` бойынша сүзіледі. IDOR қорғанысы `assertCanAccessAccount/Category` ішінде орталықтандырылған — басқа біреудің шотына кіру 403 қайтарады, 404 емес. Ортақ отбасылық шоттар нақты OWNER/MEMBER/VIEWER рөлдерін пайдаланады.
Артып отыратын `session_version` бар JWT. Пароль өзгерту, тіркелгіні бұғаттау немесе рөлді ауыстыру — барлық белсенді сессияларды жарамсыз етеді. Mobile-API refresh токендері әр жаңартуда ротацияланады.
Тіркелгінің hard-delete барлық транзакциялар, шоттар мен санаттарды бір транзакцияда каскадпен жояды. Деректерді экспорттау — CSV/XLSX/PDF бір батырмамен. Cookie consent екі санатпен (essential / functional), аналитика жоқ, трекерлер жоқ.
Барлық админ әрекеттері мен пайдаланушының сезімтал операциялары IP, user-agent және source-пен бірге `audit_log`-қа жазылады. Login әрекеттерінің логтары 30 күн сақталады. Stripe webhook оқиғалары сәтсіздік кезінде қауіпсіз replay үшін бөлек idempotency журналында тұрады.
Біз жасамайтын нәрселер
Егер сіз Monobank немесе GoCardless арқылы PSD2 банкін қоссаңыз, біз тек транзакцияларды синхрондау үшін қажеттіні аламыз: шығыс төлемдер, кіріс аударымдар, шот қалдықтары. Банк жағында ешқандай жеке деректер жоқ (паспорт, фото, биометрия). Банктің API токені AES-256-GCM арқылы шифрленген түрде сақталады; қол жетімділікті Параметрлер → Банктер бөлімінен бір батырмамен жоюға болады. GoCardless келісімі PSD2 талабы бойынша әр 90 күн сайын аяқталады — біз 7 күн бұрын ескертеміз.
Тереңірек бөлшектер
Сіздің деректеріңізді өңдейтін үшінші тарап қызметтерінің толық тізімі: Hetzner (хостинг), Stripe (есеп айырысу), Resend (email), Anthropic (AI, DRAFT), GoCardless (PSD2), Monobank API, FCM.
Тізімді ашуPer-feature матрица: не сақталады, қанша уақыт, қалай жойылады. GDPR 15/17/20-бап ағыны және әр сущность үшін retention терезелері.
Матрицаны ашуСіз өзіңіз тексере алатын нәрселер
Жоғарыдағы әрбір тұжырым код пен 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).https://app.my-fina.com/api/openapi (OpenAPI 3.1).https://app.my-fina.com/api/health (көпшілікке ашық liveness).CVE-лер, қауіпсіздік патчтары және қауіп моделінің өзгерістері туралы білу үшін жазылыңыз. Маркетинг жоқ.