Säkerhet

Hur vi skyddar dina ekonomiska uppgifter

TL;DR: Bank Statement Parser bearbetar all data lokalt, redakterar PII som standard, härdar XML-tolkning mot XXE-attacker, kör LLM:er lokalt via Ollama och levereras med SHA-256 hash-låsta beroenden och en CycloneDX SBOM.

Säkerhet som designprincip

Bank Statement Parser är byggd för att bearbeta känslig finansiell data. Varje designbeslut prioriterar säkerhet, integritet och revisionsbarhet.

Noll molnberoende

All bearbetning sker lokalt inom din körtid. De deterministiska parsrarna gör noll nätverksanrop. Hybrid-PDF-pipelinen använder Ollama för lokal LLM-inferens — ingen data skickas till moln-API:er. XML-tolkare är uttryckligen konfigurerade med no_network=True, resolve_entities=False och load_dtd=False för att förhindra all utgående åtkomst.

PII-redaktion

Personligt identifierbar information (namn, IBAN, postadresser) redakteras automatiskt i CLI-utdata och streamingläge. Detta är på som standard.

XML-säkerhet (XXE-skydd)

All XML-tolkning använder lxml med härdade inställningar:

ZIP-arkivsäkerhet

iter_secure_xml_entries() validerar varje ZIP-medlem innan extrahering:

Vägtraverseringsskydd

Indatavalidering blockerar farliga filsökvägar:

Saldoverifiering (Golden Rule)

Varje PDF-extraktion verifieras med ekvationen: opening balance + credits − debits == closing balance. Resultat taggas som VERIFIED, DISCREPANCY eller FAILED. Avvikelser kan granskas interaktivt med --type review.

Deterministisk utdata

För strukturerade format (CAMT, PAIN.001, CSV, OFX, QFX, MT940) producerar parsern byte-identisk utdata varje körning givet samma indatafil. Ingen slumpmässighet, ingen modellinferens, ingen heuristisk sampling. Detta är avgörande för:

Supply-chain-säkerhet

Verifiera lokalt

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