Seguranca por design
O Analisador de extratos bancarios e construido para processar dados financeiros sensiveis. Cada decisao de design prioriza seguranca, privacidade e auditabilidade.
Zero acesso a rede
Todo o processamento acontece localmente no seu ambiente de execucao. A biblioteca nao faz nenhuma chamada de API, nenhuma conexao com nuvem e nao coleta nenhuma telemetria. Os parsers XML sao explicitamente configurados com no_network=True, resolve_entities=False e load_dtd=False para prevenir qualquer acesso externo.
Mascaramento de PII
Informacoes de identificacao pessoal (nomes, IBANs, enderecos postais) sao automaticamente mascaradas na saida CLI e no modo streaming. Isso esta ativado por padrao.
- CLI: Campos sensiveis exibem
***REDACTED*** - Streaming:
parse_streaming(redact_pii=True)(padrao) - Exportacoes: CSV/JSON/Excel mantem dados completos para processamento posterior
- Opcional: Use
--show-piiouredact_pii=Falsequando precisar de saida nao mascarada
Seguranca XML (protecao XXE)
Toda analise XML usa lxml com configuracoes protegidas:
resolve_entities=False-- previne ataques de expansao de entidades XMLno_network=True-- bloqueia todo acesso externo a rede do parserload_dtd=False-- previne ataques baseados em DTD- Remocao de namespaces antes do processamento -- lida com qualquer variante CAMT.053 com seguranca
Seguranca de arquivos ZIP
iter_secure_xml_entries() valida cada membro antes da extracao:
- Limite de tamanho de entrada: 10 MB por entrada (configuravel)
- Limite de tamanho total: 50 MB total descomprimido (configuravel)
- Limite de taxa de compressao: 100:1 padrao -- detecta bombas ZIP
- Rejeicao de entradas criptografadas: Entradas criptografadas sao ignoradas com aviso
- Sem escritas em disco: Bytes XML passam diretamente ao parser via
from_bytes()
Prevencao de travessia de caminho
A validacao de entrada bloqueia caminhos de arquivo perigosos:
- Bytes nulos, padroes de travessia de diretorio (
../) e links simbolicos sao rejeitados - Validacao de extensao de arquivo contra formatos esperados
- Limites de tamanho de arquivo (100 MB padrao, configuravel)
Saida deterministica
Com o mesmo arquivo de entrada, o parser produz saida identica byte a byte em cada execucao. Sem aleatoriedade, sem inferencia de modelo, sem amostragem heuristica. Isso e critico para:
- Reprodutibilidade de auditoria: Execute o mesmo arquivo duas vezes e compare a saida
- Conformidade regulatoria: Demonstre processamento consistente
- Verificacao CI: 467 testes impoem determinismo com cobertura 100% de branches
Seguranca da cadeia de suprimentos
- Dependencias bloqueadas com hash SHA-256: Cada pacote no
poetry.locktem hashes de arquivo verificados - SBOM CycloneDX: Cada versao inclui uma Lista de Materiais de Software
- Procedencia de build do GitHub: Atestacao vincula cada artefato ao seu commit de origem
- Commits assinados: Todos os commits sao assinados com SSH e verificados no CI
- Verificacao de dependencias:
scripts/verify_locked_hashes.pyvalida todos os hashes localmente
Verificacao local
python -m pytest # 467 testes, cobertura 100% de branches
python scripts/verify_locked_hashes.py # Verificacao de hash SHA-256
git log --show-signature -1 # Verificar assinatura do commit