Beveiliging door ontwerp
Bankafschrift-parser is gebouwd voor het verwerken van gevoelige financiële gegevens. Elke ontwerpbeslissing geeft prioriteit aan beveiliging, privacy en controleerbaarheid.
Geen netwerktoegang
Alle verwerking vindt lokaal plaats in uw runtime. De bibliotheek maakt geen API-aanroepen, geen cloudverbindingen en verzamelt geen telemetrie. XML-parsers zijn expliciet geconfigureerd met no_network=True, resolve_entities=False en load_dtd=False om elke uitgaande toegang te voorkomen.
PII-maskering
Persoonlijk identificeerbare informatie (namen, IBAN's, postadressen) wordt automatisch gemaskeerd in CLI-uitvoer en streamingmodus. Dit staat standaard aan.
- CLI: Gevoelige velden tonen
***REDACTED*** - Streaming:
parse_streaming(redact_pii=True)(standaard) - Exporten: CSV/JSON/Excel behouden volledige gegevens voor downstreamverwerking
- Opt-in: Gebruik
--show-piiofredact_pii=Falsewanneer u ongemaskeerde uitvoer nodig heeft
XML-beveiliging (XXE-bescherming)
Alle XML-parsing gebruikt lxml met geharde instellingen:
resolve_entities=False-- voorkomt XML entity expansion-aanvallenno_network=True-- blokkeert alle uitgaande netwerktoegang vanuit de parserload_dtd=False-- voorkomt DTD-gebaseerde aanvallen- Namespace-verwijdering vóór verwerking -- verwerkt elke CAMT.053-variant veilig
ZIP-archiefbeveiliging
iter_secure_xml_entries() valideert elk ZIP-lid vóór extractie:
- Bestandsgroottelimiet: 10 MB per item (configureerbaar)
- Totale groottelimiet: 50 MB totaal ongecomprimeerd (configureerbaar)
- Compressieratiolimiet: standaard 100:1 -- detecteert ZIP-bommen
- Afwijzing versleutelde bestanden: Versleutelde items worden overgeslagen met een waarschuwing
- Geen schijfschrijfbewerkingen: XML-bytes gaan rechtstreeks naar de parser via
from_bytes()
Padtraversatiebescherming
Invoervalidatie blokkeert gevaarlijke bestandspaden:
- Null-bytes, padtraversatiepatronen (
../) en symlinks worden geweigerd - Bestandsextensievalidatie tegen verwachte formaten
- Bestandsgroottelimieten (standaard 100 MB, configureerbaar)
Deterministische uitvoer
Bij hetzelfde invoerbestand produceert de parser byte-identieke uitvoer bij elke uitvoering. Geen willekeurigheid, geen modelinferentie, geen heuristische steekproeven. Dit is cruciaal voor:
- Auditreproduceerbaarheid: Voer hetzelfde bestand twee keer uit en vergelijk de uitvoer
- Regulatoire compliance: Demonstreer consistente verwerking
- CI-verificatie: 467 tests dwingen determinisme af met 100% branchdekking
Toeleveringsketenbeveiliging
- SHA-256 hash-vergrendelde afhankelijkheden: Elk pakket in
poetry.lockheeft geverifieerde bestandshashes - CycloneDX SBOM: Elke release bevat een Software Bill of Materials
- GitHub-buildherkomst: Attestatie koppelt elk artefact aan zijn broncommit
- Getekende commits: Alle commits zijn SSH-getekend en geverifieerd in CI
- Afhankelijkheidsverificatie:
scripts/verify_locked_hashes.pyvalideert alle hashes lokaal
Lokaal verifiëren
python -m pytest # 467 tests, 100% branchdekking
python scripts/verify_locked_hashes.py # SHA-256 hashverificatie
git log --show-signature -1 # Commithandtekening verifiëren