Segurança

Como protegemos seus dados financeiros

TL;DR: O Bank Statement Parser processa todos os dados localmente, redige PII por padrão, reforça a análise XML contra ataques XXE, roda LLMs localmente via Ollama e vem com dependências bloqueadas por hash SHA-256 e um CycloneDX SBOM.

Segurança por Design

O Bank Statement Parser foi feito para processar dados financeiros sensíveis. Cada decisão de design prioriza segurança, privacidade e auditabilidade.

Zero Dependência de Nuvem

Todo o processamento acontece localmente no seu runtime. Os parsers determinísticos fazem zero chamadas de rede. O pipeline híbrido de PDF usa Ollama para inferência LLM local — nenhum dado é enviado para APIs na nuvem. Os parsers XML são configurados explicitamente com no_network=True, resolve_entities=False e load_dtd=False para impedir qualquer acesso de saída.

Redação de PII

Informações de identificação pessoal (nomes, IBANs, endereços postais) são automaticamente redadas na saída CLI e no modo de streaming. Isso vem ativado por padrão.

Segurança XML (Proteção XXE)

Toda análise XML usa lxml com configurações reforçadas:

Segurança de Arquivos ZIP

iter_secure_xml_entries() valida cada membro ZIP antes da extração:

Prevenção de Travessia de Caminho

A validação de entrada bloqueia caminhos de arquivo perigosos:

Verificação de Saldo (Golden Rule)

Toda extração de PDF é verificada com a equação: opening balance + credits − debits == closing balance. Os resultados são marcados como VERIFIED, DISCREPANCY ou FAILED. Discrepâncias podem ser revisadas interativamente com --type review.

Saída Determinística

Para formatos estruturados (CAMT, PAIN.001, CSV, OFX, QFX, MT940), dado o mesmo arquivo de entrada, o parser produz saída idêntica em bytes a cada execução. Sem aleatoriedade, sem inferência de modelo, sem amostragem heurística. Isso é essencial para:

Segurança da Cadeia de Suprimentos

Verifique Localmente

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