Sicherheit

Wie wir Ihre Finanzdaten schützen

TL;DR: Bank Statement Parser verarbeitet alle Daten lokal, schwärzt PII standardmäßig, härtet das XML-Parsing gegen XXE-Angriffe, führt LLMs lokal via Ollama aus und wird mit SHA-256-Hash-gesperrten Abhängigkeiten und einem CycloneDX SBOM ausgeliefert.

Sicherheit durch Design

Bank Statement Parser ist für die Verarbeitung sensibler Finanzdaten gebaut. Jede Designentscheidung priorisiert Sicherheit, Datenschutz und Nachvollziehbarkeit.

Keine Cloud-Abhängigkeit

Die gesamte Verarbeitung erfolgt lokal in Ihrer Laufzeitumgebung. Die deterministischen Parser führen keine Netzwerkaufrufe durch. Die hybride PDF-Pipeline nutzt Ollama für lokale LLM-Inferenz — keine Daten werden an Cloud-APIs gesendet. XML-Parser sind explizit mit no_network=True, resolve_entities=False und load_dtd=False konfiguriert, um jeglichen ausgehenden Zugriff zu verhindern.

PII-Schwärzung

Personenbezogene Daten (Namen, IBANs, Postadressen) werden in der CLI-Ausgabe und im Streaming-Modus automatisch geschwärzt. Dies ist standardmäßig aktiviert.

XML-Sicherheit (XXE-Schutz)

Alles XML-Parsing nutzt lxml mit gehärteten Einstellungen:

ZIP-Archiv-Sicherheit

iter_secure_xml_entries() validiert jedes ZIP-Mitglied vor der Extraktion:

Schutz vor Pfad-Traversal

Die Eingabevalidierung blockiert gefährliche Dateipfade:

Saldoprüfung (Golden Rule)

Jede PDF-Extraktion wird mit der Gleichung geprüft: opening balance + credits − debits == closing balance. Ergebnisse werden als VERIFIED, DISCREPANCY oder FAILED markiert. Abweichungen können interaktiv mit --type review überprüft werden.

Deterministische Ausgabe

Für strukturierte Formate (CAMT, PAIN.001, CSV, OFX, QFX, MT940) erzeugt der Parser bei gleicher Eingabedatei bei jedem Durchlauf byteidentische Ausgabe. Kein Zufall, keine Modellinferenz, kein heuristisches Sampling. Dies ist entscheidend für:

Lieferkettensicherheit

Lokal verifizieren

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