Безпека

Як ми захищаємо ваші фінансові дані

Коротко: Bank Statement Parser обробляє всі дані локально, приховує персональні дані за замовчуванням, захищає XML-аналіз від XXE-атак, запускає LLM локально через Ollama та постачається із SHA-256 hash-блокованими залежностями і CycloneDX SBOM.

Безпека за дизайном

Bank Statement Parser створений для обробки конфіденційних фінансових даних. Кожне архітектурне рішення ставить безпеку, конфіденційність та перевірюваність на перше місце.

Нульова залежність від хмари

Уся обробка відбувається локально у вашому середовищі виконання. Детерміністичні парсери не здійснюють жодних мережевих викликів. Гібридний PDF pipeline використовує Ollama для локального LLM-виведення — жодні дані не надсилаються до хмарних API. XML-парсери явно налаштовані з no_network=True, resolve_entities=False та load_dtd=False для запобігання будь-якому вихідному доступу.

Приховування персональних даних

Персональна інформація (імена, IBAN, поштові адреси) автоматично приховується у CLI та streaming-режимі. Це увімкнено за замовчуванням.

Безпека XML (захист від XXE)

Увесь XML-аналіз використовує lxml із захищеними налаштуваннями:

Безпека ZIP-архівів

iter_secure_xml_entries() перевіряє кожний запис ZIP перед витягуванням:

Захист від обходу шляхів

Валідація вхідних даних блокує небезпечні шляхи до файлів:

Перевірка балансу (Золоте правило)

Кожне PDF-витягування перевіряється рівнянням: opening balance + credits − debits == closing balance. Результати позначаються як VERIFIED, DISCREPANCY або FAILED. Розбіжності можна переглянути інтерактивно через --type review.

Детерміністичний результат

Для структурованих форматів (CAMT, PAIN.001, CSV, OFX, QFX, MT940) за умови однакового вхідного файлу парсер щоразу видає побайтово ідентичний результат. Без випадковості, без моделювання, без евристичної вибірки. Це критично для:

Безпека ланцюга постачань

Перевірте локально

python -m pytest                          # 718 tests, 100% branch coverage
python scripts/verify_locked_hashes.py    # SHA-256 hash verification
git log --show-signature -1               # Verify commit signature