設計安全
銀行對帳單解析器專為處理敏感的財務資料而建置。每個設計決策都會優先考慮安全性、隱私性和可審核性。
零網路訪問
所有處理都在運行時本地進行。該函式庫進行零 API 呼叫、零雲連接並收集零遙測資料。 XML 解析器明確配置為no_network=True, resolve_entities=False, 和load_dtd=False以防止任何出站訪問。
PII 編輯
個人識別資訊(姓名、IBAN、郵政地址)會在 CLI 輸出和流模式下自動編輯。預設此功能處於啟用狀態。
- CLI:敏感欄位顯示為
***REDACTED*** - 串流媒體:
parse_streaming(redact_pii=True)(預設) - 匯出:CSV/JSON/Excel 保留完整資料以供下游處理
- 選擇加入:使用
--show-pii或者redact_pii=False當您需要未編輯的輸出時
XML 安全性(XXE 保護)
所有 XML 解析都使用lxml具有強化設定:
resolve_entities=False-- 防止XML實體擴充攻擊 -no_network=True-- 阻止解析器的所有出站網路訪問 -load_dtd=False-- 防止基於 DTD 的攻擊- 處理前命名空間剝離-安全處理任何 CAMT.053 變體
ZIP 檔案安全
iter_secure_xml_entries()在提取之前驗證每個 ZIP 成員:
- 條目大小上限:每個條目 10 MB(可設定)
- 總大小上限:未壓縮總計 50 MB(可設定)
- 壓縮比限制:預設為 100:1 -- 偵測 ZIP 炸彈
- 加密條目拒絕:跳過加密條目並發出警告
- 無磁碟寫入:XML 位元組透過直接傳遞到解析器
from_bytes()
路徑遍歷預防
輸入驗證以阻止危險檔案路徑:
- 空字節,目錄遍歷模式(
../),且符號連結被拒絕 - 針對預期格式的檔案副檔名驗證
- 檔案大小限制(預設 100 MB,可配置)
確定性輸出
給定相同的輸入文件,解析器每次運行都會產生與位元組相同的輸出。沒有隨機性,沒有模型推理,沒有啟發式取樣。這對於以下方面至關重要:
- 審核重現性:運行同一文件兩次並比較輸出
- 法規遵循:展示一致的處理
- CI 驗證:467 項測試強制執行確定性,分支覆蓋率為 100%
供應鏈安全
- SHA-256 雜湊鎖定相依性:中的每個套件
poetry.lock已驗證文件哈希值 - CycloneDX SBOM:每個版本都包含軟體物料清單
- GitHub 建置來源:證明將每個工件連結到其來源提交
- 簽名提交:所有提交均經過 SSH 簽署並在 CI 中進行驗證
- 依賴關係驗證:
scripts/verify_locked_hashes.py在本地驗證所有哈希值
本機驗證
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