Sécurité par conception
Analyseur de relevés bancaires est conçu pour le traitement de données financières sensibles. Chaque décision de conception privilégie la sécurité, la confidentialité et l'auditabilité.
Zéro accès réseau
Tout le traitement s'effectue localement dans votre environnement d'exécution. La bibliothèque ne fait aucun appel API, aucune connexion cloud et ne collecte aucune télémétrie. Les parseurs XML sont explicitement configurés avec no_network=True, resolve_entities=False et load_dtd=False pour empêcher tout accès sortant.
Masquage des DCP
Les données à caractère personnel (noms, IBAN, adresses postales) sont automatiquement masquées en sortie CLI et en mode streaming. Cette fonctionnalité est activée par défaut.
- CLI : Les champs sensibles affichent
***REDACTED*** - Streaming :
parse_streaming(redact_pii=True)(par défaut) - Exports : CSV/JSON/Excel conservent les données complètes pour le traitement en aval
- Opt-in : Utilisez
--show-piiouredact_pii=Falselorsque vous avez besoin de la sortie non masquée
Sécurité XML (protection XXE)
Toute l'analyse XML utilise lxml avec des paramètres renforcés :
resolve_entities=False-- empêche les attaques par expansion d'entités XMLno_network=True-- bloque tout accès réseau sortant du parseurload_dtd=False-- empêche les attaques basées sur les DTD- Suppression des espaces de noms avant traitement -- gère toute variante CAMT.053 en toute sécurité
Sécurité des archives ZIP
iter_secure_xml_entries() valide chaque membre ZIP avant l'extraction :
- Plafond de taille par entrée : 10 Mo par entrée (configurable)
- Plafond de taille totale : 50 Mo total décompressé (configurable)
- Limite de ratio de compression : 100:1 par défaut -- détecte les bombes ZIP
- Rejet des entrées chiffrées : Les entrées chiffrées sont ignorées avec un avertissement
- Aucune écriture disque : Les octets XML passent directement au parseur via
from_bytes()
Prévention du parcours de répertoires
La validation des entrées bloque les chemins de fichiers dangereux :
- Les octets nuls, les motifs de parcours de répertoires (
../) et les liens symboliques sont rejetés - Validation de l'extension de fichier par rapport aux formats attendus
- Limites de taille de fichier (100 Mo par défaut, configurable)
Sortie déterministe
Pour un même fichier d'entrée, le parseur produit une sortie identique octet par octet à chaque exécution. Aucun aléatoire, aucune inférence de modèle, aucun échantillonnage heuristique. C'est essentiel pour :
- Reproductibilité des audits : Exécutez le même fichier deux fois et comparez les sorties
- Conformité réglementaire : Démontrez un traitement cohérent
- Vérification CI : 467 tests garantissent le déterminisme avec 100% de couverture de branches
Sécurité de la chaîne d'approvisionnement
- Dépendances verrouillées par hash SHA-256 : Chaque paquet dans
poetry.locka des hashes de fichiers vérifiés - SBOM CycloneDX : Chaque version inclut un Software Bill of Materials
- Provenance de build GitHub : L'attestation lie chaque artefact à son commit source
- Commits signés : Tous les commits sont signés SSH et vérifiés en CI
- Vérification des dépendances :
scripts/verify_locked_hashes.pyvalide tous les hashes localement
Vérifier localement
python -m pytest # 467 tests, 100% couverture de branches
python scripts/verify_locked_hashes.py # Verification des hash SHA-256
git log --show-signature -1 # Verifier la signature du commit