TL; DR: ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร ทำการเรียกผ่านเครือข่ายเป็นศูนย์, ตรวจทาน PII ตามค่าเริ่มต้น, ทำให้การแยกวิเคราะห์ XML แข็งแกร่งขึ้นจากการโจมตี XXE และมาพร้อมกับการอ้างอิงที่ล็อคแฮช SHA-256 และ CycloneDX SBOM
ความปลอดภัยโดยการออกแบบ
ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร สร้างขึ้นเพื่อประมวลผลข้อมูลทางการเงินที่ละเอียดอ่อน การตัดสินใจในการออกแบบทุกครั้งจะให้ความสำคัญกับความปลอดภัย ความเป็นส่วนตัว และการตรวจสอบ
การเข้าถึงเครือข่ายเป็นศูนย์
การประมวลผลทั้งหมดเกิดขึ้นในเครื่องภายในรันไทม์ของคุณ ไลบรารีทำการเรียก 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-- บล็อกการเข้าถึงเครือข่ายขาออกทั้งหมดจาก parser -load_dtd=False-- ป้องกันการโจมตีแบบ DTD- การลอกเนมสเปซก่อนการประมวลผล -- จัดการตัวแปร CAMT.053 ใดๆ ได้อย่างปลอดภัย
การรักษาความปลอดภัยไฟล์ ZIP
iter_secure_xml_entries()ตรวจสอบสมาชิก ZIP ทุกคนก่อนทำการแตกไฟล์:
- ขนาดรายการสูงสุด: 10 MB ต่อรายการ (กำหนดค่าได้)
- ขนาดสูงสุดรวม: รวม 50 MB ที่ไม่มีการบีบอัด (กำหนดค่าได้)
- ขีดจำกัดอัตราส่วนการบีบอัด: ค่าเริ่มต้น 100:1 -- ตรวจจับ ZIP Bomb
- การปฏิเสธรายการที่เข้ารหัส: รายการที่เข้ารหัสจะถูกข้ามพร้อมคำเตือน
- ไม่มีการเขียนดิสก์: ไบต์ XML ส่งผ่านไปยังตัวแยกวิเคราะห์โดยตรงผ่าน
from_bytes()
การป้องกันการข้ามเส้นทาง
การตรวจสอบอินพุตจะบล็อกเส้นทางไฟล์ที่เป็นอันตราย:
- ไบต์ว่าง รูปแบบการข้ามผ่านไดเรกทอรี (
../) และซิมลิงก์ถูกปฏิเสธ - การตรวจสอบนามสกุลไฟล์กับรูปแบบที่คาดหวัง
- ขีดจำกัดขนาดไฟล์ (ค่าเริ่มต้น 100 MB กำหนดค่าได้)
ผลลัพธ์ที่กำหนด
ด้วยไฟล์อินพุตเดียวกัน parser จะสร้างเอาต์พุตที่เหมือนกันแบบไบต์ทุกๆ รัน ไม่มีการสุ่ม ไม่มีการอนุมานแบบจำลอง ไม่มีการสุ่มตัวอย่างแบบฮิวริสติก นี่เป็นสิ่งสำคัญสำหรับ:
- การตรวจสอบความสามารถในการทำซ้ำ: เรียกใช้ไฟล์เดียวกันสองครั้งและทำให้เอาต์พุตต่างกัน
- การปฏิบัติตามกฎระเบียบ: แสดงให้เห็นถึงการประมวลผลที่สอดคล้องกัน
- การตรวจสอบ 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