Securitate

Cum vă protejăm datele financiare

TL;DR: Bank Statement Parser procesează toate datele local, redactează PII implicit, securizează parsarea XML împotriva atacurilor XXE, rulează LLM-uri local prin Ollama și este livrat cu dependențe SHA-256 blocate cu hash și un SBOM CycloneDX.

Securitate prin design

Bank Statement Parser este construit pentru procesarea datelor financiare sensibile. Fiecare decizie de proiectare prioritizează securitatea, confidențialitatea și auditabilitatea.

Zero dependență de cloud

Toată procesarea are loc local în runtime. Parserele deterministe nu efectuează niciun apel de rețea. Pipeline-ul hibrid PDF folosește Ollama pentru inferență LLM locală — nicio dată nu este trimisă către API-uri cloud. Parserele XML sunt configurate explicit cu no_network=True, resolve_entities=False și load_dtd=False pentru a preveni orice acces de ieșire.

Redactare PII

Informațiile de identificare personală (nume, IBAN-uri, adrese poștale) sunt redactate automat în ieșirea CLI și modul streaming. Funcția este activată implicit.

Securitate XML (protecție XXE)

Toată parsarea XML folosește lxml cu setări securizate:

Securitatea arhivelor ZIP

iter_secure_xml_entries() validează fiecare membru ZIP înainte de extragere:

Prevenirea traversării căilor

Validarea intrărilor blochează căile periculoase de fișiere:

Verificarea soldului (Regula de Aur)

Fiecare extracție PDF este verificată cu ecuația: opening balance + credits − debits == closing balance. Rezultatele sunt etichetate ca VERIFIED, DISCREPANCY sau FAILED. Discrepanțele pot fi revizuite interactiv cu --type review.

Ieșire deterministă

Pentru formatele structurate (CAMT, PAIN.001, CSV, OFX, QFX, MT940), cu același fișier de intrare, parserul produce ieșire identică la nivel de octet la fiecare rulare. Fără aleatorism, fără inferență de model, fără eșantionare euristică. Acest lucru este esențial pentru:

Securitatea lanțului de aprovizionare

Verificați local

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