Безопасность

Как мы защищаем ваши финансовые данные

Кратко: Bank Statement Parser обрабатывает все данные локально, маскирует PII по умолчанию, защищает XML-парсинг от XXE-атак, запускает LLM локально через Ollama и поставляется с SHA-256 hash-lock зависимостей и CycloneDX SBOM.

Безопасность по задумке

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

Нулевая зависимость от облака

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

Маскирование PII

Персональные данные (имена, IBAN, почтовые адреса) автоматически маскируются в выводе CLI и потоковом режиме. Это включено по умолчанию.

Безопасность 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