Ozet: Bank Statement Parser tum verileri yerel olarak isler, varsayilan olarak PII'yi gizler, XXE saldirilarina karsi XML ayristirmayi guclendirir, LLM'leri Ollama uzerinden yerel calistirir ve SHA-256 hash kilitli bagimliliklar ile CycloneDX SBOM ile birlikte gelir.
Tasarımdan Gelen Güvenlik
Bank Statement Parser, hassas finansal verileri işlemek için tasarlanmıştır. Her tasarım kararı güvenliğe, gizliliğe ve denetlenebilirliğe öncelik verir.
Sıfır Bulut Bağımlılığı
Tüm işlemler çalışma zamanınız içinde yerel olarak gerçekleşir. Deterministik ayrıştırıcılar sıfır ağ çağrısı yapar. Hibrit PDF pipeline, yerel LLM çıkarımı için Ollama kullanır -- bulut API'lerine veri gönderilmez. XML ayrıştırıcıları no_network=True, resolve_entities=False ve load_dtd=False ile açıkça yapılandırılarak giden erişim engellenir.
PII Redaksiyonu
Kişisel olarak tanımlanabilir bilgiler (adlar, IBAN'lar, posta adresleri) CLI çıkışı ve streaming modunda otomatik olarak gizlenir. Bu, varsayılan olarak açıktır.
- CLI: Hassas alanlar
***REDACTED***olarak gösterilir - Streaming:
parse_streaming(redact_pii=True)(varsayılan) - Dışa aktarımlar: CSV/JSON/Excel, sonraki işlemler için tam verileri korur
- İsteğe bağlı gösterim: Gizlenmemiş çıktıya ihtiyacınız olduğunda
--show-piiveyaredact_pii=Falsekullanın
XML Güvenliği (XXE Koruması)
Tüm XML ayrıştırma lxml ile güçlendirilmiş ayarlar kullanır:
resolve_entities=False-- XML varlık genişletme saldırılarını önlerno_network=True-- ayrıştırıcıdan gelen tüm giden ağ erişimini engellerload_dtd=False-- DTD tabanlı saldırıları önler- İşlemeden önce ad alanı temizleme -- herhangi bir CAMT.053 varyantını güvenle işler
ZIP Arşiv Güvenliği
iter_secure_xml_entries() çıkarmadan önce her ZIP üyesini doğrular:
- Giriş boyutu üst sınırı: Giriş başına 10 MB (yapılandırılabilir)
- Toplam boyut üst sınırı: Toplam sıkıştırılmamış 50 MB (yapılandırılabilir)
- Sıkıştırma oranı sınırı: Varsayılan 100:1 -- ZIP bombalarını algılar
- Şifreli giriş reddi: Şifreli girişler uyarıyla atlanır
- Disk yazma yok: XML baytları
from_bytes()ile doğrudan ayrıştırıcıya aktarılır
Yol Geçişi Önleme
Girdi doğrulama tehlikeli dosya yollarını engeller:
- Null baytlar, dizin geçiş desenleri (
../) ve sembolik bağlantılar reddedilir - Beklenen formatlara göre dosya uzantısı doğrulaması
- Dosya boyutu sınırları (varsayılan 100 MB, yapılandırılabilir)
Bakiye Doğrulama (Altın Kural)
Her PDF çıkarımı şu denklemle doğrulanır: opening balance + credits − debits == closing balance. Sonuçlar VERIFIED, DISCREPANCY veya FAILED olarak etiketlenir. Tutarsızlıklar --type review ile etkileşimli olarak incelenebilir.
Deterministik Çıktı
Yapılandırılmış formatlar (CAMT, PAIN.001, CSV, OFX, QFX, MT940) için aynı girdi dosyası verildiğinde ayrıştırıcı her çalıştırmada bayt düzeyinde aynı çıktıyı üretir. Rastgelelik yok, model çıkarımı yok, buluşsal örnekleme yok. Bu şunlar için kritiktir:
- Denetim tekrarlanabilirliği: Aynı dosyayı iki kez çalıştırın ve çıktıları karşılaştırın
- Mevzuat uyumluluğu: Tutarlı işleme gösterin
- CI doğrulaması: 718 test, %100 dal kapsamıyla determinizmi güvence altına alır
Tedarik Zinciri Güvenliği
- SHA-256 hash kilitli bağımlılıklar:
poetry.lockiçindeki her paketin doğrulanmış dosya hash'leri vardır - CycloneDX SBOM: Her sürüm bir Yazılım Malzeme Listesi içerir
- GitHub derleme kaynağı: Onaylama her yapıyı kaynak commit'ine bağlar
- İmzalı commit'ler: Tüm commit'ler SSH imzalıdır ve CI'da doğrulanır
- Bağımlılık doğrulaması:
scripts/verify_locked_hashes.pytüm hash'leri yerel olarak doğrular
Yerel Olarak Doğrulayın
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