Безпека за проектом
Парсер банківських виписок створено для обробки конфіденційних фінансових даних. Кожне дизайнерське рішення надає пріоритет безпеці, конфіденційності та можливості перевірки.
Нульовий доступ до мережі
Уся обробка відбувається локально у вашому середовищі виконання. Бібліотека не здійснює викликів 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