Zabezpečení

Jak chráníme vaše finanční údaje

TL;DR: Bank Statement Parser zpracovává veškerá data lokálně, ve výchozím nastavení rediguje PII, zabezpečuje XML parsování proti XXE útokům, provozuje LLM lokálně přes Ollama a dodává se s SHA-256 hash-locked závislostmi a CycloneDX SBOM.

Zabezpečení od návrhu

Bank Statement Parser je vytvořen pro zpracování citlivých finančních dat. Každé rozhodnutí upřednostňuje zabezpečení, soukromí a auditovatelnost.

Nulová závislost na cloudu

Veškeré zpracování probíhá lokálně ve vašem runtime. Deterministické parsery neprovádějí žádná síťová volání. Hybridní PDF pipeline používá Ollama pro lokální LLM inferenci — žádná data nejsou odesílána do cloudových API. XML parsery jsou explicitně nakonfigurovány s no_network=True, resolve_entities=False a load_dtd=False pro prevenci jakéhokoli odchozího přístupu.

Redakce PII

Osobně identifikovatelné informace (jména, IBANy, poštovní adresy) jsou automaticky redigovány ve výstupu CLI a režimu streamování. Toto je ve výchozím nastavení zapnuto.

Zabezpečení XML (ochrana proti XXE)

Veškeré XML parsování používá lxml se zabezpečeným nastavením:

Zabezpečení ZIP archivů

iter_secure_xml_entries() validuje každý člen ZIP před extrakcí:

Prevence path traversal

Validace vstupu blokuje nebezpečné cesty k souborům:

Ověření zůstatku (Golden Rule)

Každá PDF extrakce je ověřena rovnicí: opening balance + credits − debits == closing balance. Výsledky jsou označeny jako VERIFIED, DISCREPANCY nebo FAILED. Nesrovnalosti lze zkontrolovat interaktivně pomocí --type review.

Deterministický výstup

Pro strukturované formáty (CAMT, PAIN.001, CSV, OFX, QFX, MT940) při stejném vstupním souboru parser produkuje bajtově identický výstup při každém spuštění. Žádná náhodnost, žádná modelová inference, žádné heuristické vzorkování. To je klíčové pro:

Zabezpečení dodavatelského řetězce

Ověření lokálně

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