Seguridad ayon sa Disenyo
Ang Bank Statement Parser ay binuo para sa pagproseso ng sensitibong data sa pananalapi. Ang bawat desisyon sa disenyo ay inuuna ang seguridad, privacy, at auditability.
Zero Network Access
Ang lahat ng pagproseso ay nangyayari nang lokal sa loob ng iyong runtime. Ang library ay gumagawa ng zero na mga tawag sa API, zero na koneksyon sa ulap, at nangongolekta ng zero telemetry. Ang mga XML parser ay tahasang naka-configure sano_network=True, resolve_entities=False, atload_dtd=Falseupang maiwasan ang anumang papalabas na pag-access.
PII Redaction
Ang impormasyong nagbibigay ng personal na pagkakakilanlan (mga pangalan, IBAN, mga postal address) ay awtomatikong na-redact sa CLI output at streaming mode. Naka-on ito bilang default.
- CLI: Ang mga sensitibong field ay ipinapakita bilang
***REDACTED*** - Pag-stream:
parse_streaming(redact_pii=True)(default) - Mga Pag-export: Ang CSV/JSON/Excel ay nagpapanatili ng buong data para sa downstream na pagproseso
- Opt-in: Gamitin
--show-piioredact_pii=Falsekapag kailangan mo ng hindi na-redact na output
Seguridad ng XML (Proteksyon ng XXE)
Lahat ng paggamit ng XML parsinglxmlna may mga hardened na setting:
resolve_entities=False-- pinipigilan ang mga pag-atake ng pagpapalawak ng XML entity -no_network=True-- hinaharangan ang lahat ng papalabas na access sa network mula sa parser -load_dtd=False-- pinipigilan ang mga pag-atake na nakabatay sa DTD- Pagtanggal ng namespace bago iproseso -- pinangangasiwaan ang anumang variant ng CAMT.053 nang ligtas
ZIP Archive Security
iter_secure_xml_entries()pinapatunayan ang bawat miyembro ng ZIP bago ang pagkuha:
- Takip ng laki ng entry: 10 MB bawat entry (nako-configure)
- Kabuuang cap ng laki: 50 MB kabuuang hindi na-compress (nako-configure)
- Limitan ng ratio ng compression: 100:1 default -- nakakakita ng mga ZIP bomb
- Pagtanggi sa naka-encrypt na entry: Nilaktawan ang mga naka-encrypt na entry nang may babala
- Walang disk writes: Ang mga XML byte ay direktang dumadaan sa parser sa pamamagitan ng
from_bytes()
Path Traversal Prevention
Hinaharangan ng pagpapatunay ng input ang mga mapanganib na landas ng file:
- Null bytes, mga pattern ng traversal ng direktoryo (
../), at tinatanggihan ang mga symlink - Pagpapatunay ng extension ng file laban sa mga inaasahang format
- Mga limitasyon sa laki ng file (100 MB default, maaaring i-configure)
Deterministikong Output
Dahil sa parehong input file, ang parser ay gumagawa ng byte-identical na output bawat run. Walang randomness, walang model inference, walang heuristic sampling. Ito ay kritikal para sa:
- Pagiging reproducibility ng pag-audit: Patakbuhin ang parehong file nang dalawang beses at ibahin ang output
- Pagsunod sa regulasyon: Magpakita ng pare-parehong pagproseso
- Pag-verify ng CI: 467 na pagsubok ang nagpapatupad ng determinismo na may 100% na saklaw ng sangay
Seguridad ng Supply Chain
- SHA-256 hash-locked dependencies: Bawat package sa
poetry.lockay may na-verify na mga hash ng file - CycloneDX SBOM: Ang bawat release ay may kasamang Software Bill of Materials
- GitHub build provenance: Iniuugnay ng pagpapatunay ang bawat artifact sa source commit nito
- Signed commits: Lahat ng commits ay SSH-signed at na-verify sa CI
- Pag-verify ng dependency:
scripts/verify_locked_hashes.pypinapatunayan ang lahat ng mga hash nang lokal
I-verify nang Lokal
python -m pytest # 467 tests, 100% branch coverage
python scripts/verify_locked_hashes.py # SHA-256 hash verification
git log --show-signature -1 # Verify commit signature