TL;DR: Парсер банковских выписок не выполняет никаких сетевых вызовов, по умолчанию редактирует PII, усиливает синтаксический анализ XML от атак XXE и поставляется с зависимостями с хеш-блокировкой SHA-256 и SBOM CycloneDX.
Безопасность по задумке
Парсер банковских выписок создан для обработки конфиденциальных финансовых данных. В каждом проектном решении приоритет отдается безопасности, конфиденциальности и возможности аудита.
Нулевой доступ к сети
Вся обработка происходит локально в вашей среде выполнения. Библиотека не выполняет вызовов API, не использует облачных подключений и не собирает данные телеметрии. XML-парсеры явно настроены с помощьюno_network=True, resolve_entities=False, иload_dtd=Falseдля предотвращения любого исходящего доступа.
Редактирование личных данных
Личная информация (имена, номера IBAN, почтовые адреса) автоматически редактируется в режиме вывода CLI и потоковой передачи. Это включено по умолчанию.
- CLI: чувствительные поля отображаются как
***REDACTED*** - Трансляция:
parse_streaming(redact_pii=True)(по умолчанию) - Экспорт: CSV/JSON/Excel сохраняет полные данные для последующей обработки.
- Принять: используйте
--show-piiилиredact_pii=Falseкогда вам нужен неотредактированный результат
Безопасность XML (защита XXE)
Все виды использования синтаксического анализа XMLlxmlс усиленными настройками:
resolve_entities=False-- предотвращает атаки расширения сущности XML -no_network=True-- блокирует весь исходящий доступ к сети от парсера -load_dtd=False-- предотвращает атаки на основе DTD — Удаление пространства имен перед обработкой — безопасно обрабатывает любой вариант CAMT.053.
Безопасность ZIP-архива
iter_secure_xml_entries()проверяет каждого члена ZIP перед извлечением:
- Ограничение размера записи: 10 МБ на каждую запись (настраивается).
- Ограничение общего размера: всего 50 МБ без сжатия (настраивается).
- Предельная степень сжатия: по умолчанию 100:1 – обнаруживает ZIP-бомбы.
- Отклонение зашифрованной записи: зашифрованные записи пропускаются с предупреждением.
- Запись на диск не выполняется: байты XML передаются непосредственно в анализатор через
from_bytes()
Предотвращение обхода пути
Проверка входных данных блокирует опасные пути к файлам:
- Нулевые байты, шаблоны обхода каталогов (
../), а символические ссылки отклоняются - Проверка расширения файла на соответствие ожидаемым форматам.
- Ограничения на размер файла (по умолчанию 100 МБ, настраивается)
Детерминированный вывод
Учитывая один и тот же входной файл, синтаксический анализатор при каждом запуске выдает байтовые выходные данные. Никакой случайности, никакого модельного вывода, никакой эвристической выборки. Это критично для:
- Воспроизводимость аудита: дважды запустите один и тот же файл и сравните выходные данные.
- Соответствие нормативным требованиям: демонстрация последовательной обработки.
- Проверка CI: 467 тестов обеспечивают детерминизм со 100 % охватом ветвей.
Безопасность цепочки поставок
- Зависимости с хеш-блокировкой SHA-256: каждый пакет в
poetry.lockпроверил хеши файлов - CycloneDX SBOM: каждый выпуск включает в себя спецификацию программного обеспечения.
- Происхождение сборки GitHub: аттестация связывает каждый артефакт с исходной фиксацией.
- Подписанные коммиты: все коммиты подписаны по SSH и проверены в CI.
- Проверка зависимостей:
scripts/verify_locked_hashes.pyпроверяет все хеши локально
Проверить локально
python -m pytest # 467 tests, 100% branch coverage
python scripts/verify_locked_hashes.py # SHA-256 hash verification
git log --show-signature -1 # Verify commit signature