การรายงานของ Engine
กระบวนการวิเคราะห์
ไลบรารี Glasswall รับไฟล์ผ่าน API ที่เผยแพร่ไว้ และส่งไฟล์นั้นผ่านรอบกระบวนการหลายรอบ เอาต์พุตจากแต่ละรอบจะกลายเป็นอินพุตสำหรับรอบถัดไป จึงช่วยคงระดับการแยกจากกันระหว่างกระบวนการไว้ การวิเคราะห์ไฟล์จะเกิดขึ้นในแต่ละรอบ รอบแรก ๆ จะดึงโครงสร้างของไฟล์และขนาดของส่วนประกอบต่าง ๆ ออกมา ส่วนรอบหลัง ๆ จะมุ่งเน้นการตรวจสอบทางไวยากรณ์และเชิงความหมาย ซึ่งช่วยระบุแหล่งความเสี่ยงที่เป็นไปได้ ฟิลด์ที่อยู่นอกช่วง หรือโครงสร้างที่ผิดรูปแบบ
ในกรณีที่องค์ประกอบของไฟล์ถูกบีบอัด องค์ประกอบเหล่านั้นจะถูกขยายออก และผลลัพธ์จะถูกประเมิน วิเคราะห์ และตรวจสอบยืนยัน สิ่งนี้ทำให้รายงานการวิเคราะห์ที่เผยแพร่เมื่อสิ้นสุดกระบวนการสามารถให้การประเมินเนื้อหาและโครงสร้างของไฟล์ได้อย่างละเอียด ด้วยการไล่ผ่านกระบวนการ sanitisation และ remediation ทำให้ Glasswall สามารถจัดทำรายงานที่แม่นยำเกี่ยวกับการดำเนินการที่สามารถทำได้โดยฟังก์ชันการ regenerate ของ Glasswall ซึ่งทำให้ไฟล์สอดคล้องกับข้อกำหนด
ในแต่ละรอบ ไฟล์ที่กำลังประมวลผลจะถูกแปลงเป็นรูปแบบภายในของ Glasswall เอง ซึ่งช่วยให้กระบวนการ parsing และ traversing ง่ายขึ้น และช่วยสร้างการแยกส่วน เมื่อกระบวนการวิเคราะห์นำทางผ่านโครงสร้างของ Glasswall การตรวจสอบแบบละเอียดจะไม่ได้ทำเฉพาะกับองค์ประกอบแต่ละรายการเท่านั้น แต่ยังทำในระดับที่สูงขึ้นกับความสัมพันธ์ระหว่างองค์ประกอบของไฟล์ด้วย การตรวจสอบระดับสูงเหล่านี้ช่วยให้สามารถตรวจสอบโครงสร้างเชิงความหมายและความสอดคล้องของไฟล์ได้อย่างถูกต้อง
รายงานการวิเคราะห์
รายงานการวิเคราะห์ของ Embedded Engine ให้คำอธิบายข้อมูลโดยละเอียดที่ไม่ขึ้นกับชนิดไฟล์ และถูกบันทึกในรูปแบบ XML โครงสร้างของรายงานนี้เป็นไปตาม Analysis Report XSD ซึ่งออกแบบมาเพื่อให้การ parsing และการประมวลผลง่ายขึ้น analysis report XSD อยู่ในโฟลเดอร์ /schemas/sdk_editor ของแพ็กเกจรีลีส Embedded Engine
รายงานการวิเคราะห์ประกอบด้วยข้อมูลไฟล์ดังต่อไปนี้:
- สรุปเอกสาร — ข้อมูลระดับสูงที่เฉพาะเจาะจงกับไฟล์
- policy การจัดการเนื้อหา — การตั้งค่าของสวิตช์การจัดการเนื้อหาที่ถูกนำไปใช้กับไฟล์ที่ประมวลผลแล้ว
- กลุ่มเนื้อหา — การจัดกลุ่มหลักของเนื้อหาที่ตรวจพบในไฟล์ที่ประมวลผลแล้ว
- รายการเนื้อหา — โครงสร้างระดับล่างที่ตรวจพบในไฟล์ที่ประมวลผลแล้ว
- รายการปัญหา — โครงสร้างที่ตรวจพบซึ่งไม่ตรงกับข้อกำหนดของผู้ผลิต หรือโครงสร้างที่ตรวจพบซึ่งไม่ได้รับอนุญาตตาม policy (ซึ่งทั้งสองกรณีจะปฏิเสธไฟล์)
- รายการ Sanitisation — โครงสร้างที่ตรวจพบภายใต้การจัดการเนื้อหาซึ่งถูกทำเครื่องหมายให้ลบออกตาม policy
- รายการที่อนุญาต — โครงสร้างที่ตรวจพบภายใต้การจัดการเนื้อหาซึ่งได้รับอนุญาตตาม policy
- รายการการแก้ไข — การแก้ไขอัตโนมัติที่นำไปใช้กับไฟล์ที่ประมวลผลแล้ว เพื่อทำให้ไฟล์สอดคล้องกับข้อกำหนดของผู้ผลิต
ตัวอย่างรายงานการวิเคราะห์
ส่วนนี้ประกอบด้วย Glasswall Analysis Report ฉบับย่อ ซึ่งมีองค์ประกอบหลักทั้งหมดของรายงานทั่วไป ตัวอย่างนี้อ้างอิงจากไฟล์ PDF
สรุปเอกสาร
รายงาน XML แต่ละฉบับจะเริ่มต้นด้วยสรุปเอกสารดังที่แสดงด้านล่าง:
<gw:DocumentSummary>
<gw:TotalSizeInBytes>2293803</gw:TotalSizeInBytes>
<gw:FileType>pdf</gw:FileType>
<gw:Version>PDF-1.6</gw:Version>
<gw:FileTypeDetectionMethod>signature match</gw:FileTypeDetectionMethod>
<gw:InputSHA256>DEE7CEB7AB57227121FF65F0D8D0878CBEDF90864069D9525698257972498099</gw:InputSHA256>
<gw:OutputSHA256>83EE59FAB5972429CE65CBB22EBF8B592D53F47927E0FA751584875D4F80CA1E</gw:OutputSHA256>
<gw:ProcessingTimeMilliseconds>101</gw:ProcessingTimeMilliseconds>
<gw:ComplexityLevel>4.41</gw:ComplexityLevel>
</gw:DocumentSummary>
- TotalSizeInBytes - ขนาดของไฟล์อินพุต
- FileType - ประเภทไฟล์ที่ Glasswall ตรวจพบ
- Version - เวอร์ชันของรูปแบบไฟล์ (เมื่อสามารถระบุได้)
- FileTypeDetectionMethod - วิธีการตรวจจับของ Glasswall ที่ใช้ในการระบุรูปแบบไฟล์
- InputSHA256 - SHA-256 ของไฟล์อินพุตต้นฉบับ
- OutputSHA256 - SHA-256 ของไฟล์เอาต์พุตหลังจากผ่านการประมวลผลโดย Glasswall (หากมีการสร้างไฟล์ขึ้นใหม่)
- ProcessingTimeMilliseconds - เวลาที่ Glasswall วัดได้ซึ่งใช้ในการประมวลผลไฟล์
- ComplexityLevel - ค่าประมาณระดับความซับซ้อนของไฟล์โดย Glasswall ซึ่งได้จากการคำนวณ log10 โดยแสดงทศนิยม 2 ตำแหน่งของจำนวนอาร์ติแฟกต์ที่ระบุพบในไฟล์
การจัดการเนื้อหา
จากนั้นจะแสดงรายการ policy การจัดการเนื้อหาที่ใช้กับไฟล์
หมายเหตุ: รายงานแต่ละฉบับจะแสดงรายการ policies ทั้งหมดสำหรับไฟล์ทุกประเภท หาก policy ยังไม่ได้รับการกำหนดค่าแต่มีให้ใช้งาน ระบบจะแสดงการตั้งค่า policy เริ่มต้นที่ถูกนำมาใช้ด้วย
การตั้งค่าสวิตช์การจัดการเนื้อหาบางส่วนของ PDF แสดงอยู่ด้านล่าง:
<gw:ContentManagementPolicy>
<gw:Camera cameraName="pdfConfig">
<gw:ContentSwitch>
<gw:ContentName>javascript</gw:ContentName>
<gw:ContentValue>sanitise</gw:ContentValue>
</gw:ContentSwitch>
<gw:ContentSwitch>
<gw:ContentName>acroform</gw:ContentName>
<gw:ContentValue>sanitise</gw:ContentValue>
</gw:ContentSwitch>
<gw:ContentSwitch>
<gw:ContentName>embedded_files</gw:ContentName>
<gw:ContentValue>sanitise</gw:ContentValue>
</gw:ContentSwitch>
</gw:Camera>
</gw:ContentManagementPolicy>
กลุ่มเนื้อหาและรายการ
จำนวนกลุ่มเนื้อหาที่แตกต่างกันซึ่งพบในไฟล์ (16) พร้อมด้วยตัวอย่างของรายการเนื้อหาจากกลุ่มแรก แสดงอยู่ด้านล่าง:
<gw:ContentGroups groupCount="16">
<gw:ContentGroup>
<gw:BriefDescription>PDF document has Basic File Section structure instances</gw:BriefDescription>
<gw:ContentItems itemCount="5">
<gw:ContentItem>
<gw:TechnicalDescription>PDF Header Instances</gw:TechnicalDescription>
<gw:InstanceCount>1</gw:InstanceCount>
<gw:TotalSizeInBytes>15</gw:TotalSizeInBytes>
<gw:AverageSizeInBytes>15</gw:AverageSizeInBytes>
<gw:MinSizeInBytes>15</gw:MinSizeInBytes>
<gw:MaxSizeInBytes>15</gw:MaxSizeInBytes>
</gw:ContentItem>
</gw:ContentItems>>
</gw:ContentGroup>
...
</gw:ContentGroups>
รายการ Sanitisation
ในตัวอย่างนี้ เนื่องจากสวิตช์ metadata ถูกตั้งค่าเป็น sanitise จึงแสดงโครงสร้างพจนานุกรมว่าถูกทำเครื่องหมายเพื่อนำออก
<gw:SanitisationItems itemCount="1">
<gw:SanitisationItem>
<gw:TechnicalDescription>Document information dictionary detected in a document trailer dictionary.</gw:TechnicalDescription>
<gw:SanitisationId>16872998749</gw:SanitisationId>
<gw:InstanceCount>1</gw:InstanceCount>
<gw:TotalSizeInBytes>0</gw:TotalSizeInBytes>
</gw:SanitisationItem>
</gw:SanitisationItems>
รายการที่อนุญาต
ในตัวอย่างนี้ เนื่องจากสวิตช์ metadata ถูกตั้งค่าเป็น allow ดังนั้นโครงสร้างพจนานุกรมจึงถูกเก็บไว้
<gw:AllowedItems itemCount="1">
<gw:AllowedItem>
<gw:TechnicalDescription>Document information dictionary detected in a document trailer dictionary.</gw:TechnicalDescription>
<gw:AllowedId>16872998749</gw:AllowedId>
<gw:InstanceCount>1</gw:InstanceCount>
<gw:TotalSizeInBytes>0</gw:TotalSizeInBytes>
</gw:AllowedItem>
รายการ Remedy
รายงาน XML ไม่ได้มี Remedies ทุกฉบับ เนื่องจากสิ่งเหล่านี้คือการแก้ไขอัตโนมัติที่ทำขึ้นเพื่อให้ไฟล์ที่สร้างใหม่สอดคล้องกับข้อกำหนดของไฟล์ ในตัวอย่างนี้ มีการรายงานรายการ remedy ในไฟล์
<gw:RemedyItems itemCount="1">
<gw:RemedyItem>
<gw:TechnicalDescription>
PDF Stream is missing an End-Of-Line before the 'EndStream' marker.
</w:TechnicalDescription>
<gw:RemedyId>1605893787</gw:RemedyId>
<gw:InstanceCount>7</gw:InstanceCount>
</gw:RemedyItem>
</gw:RemedyItems>
รายการ Issue
มีไฟล์เพียงไม่กี่ไฟล์ที่มี issue เนื่องจากนั่นหมายความว่าไฟล์เหล่านั้นไม่ได้เพียงแค่ไม่เป็นไปตามข้อกำหนดของไฟล์เท่านั้น แต่ Glasswall ยังไม่สามารถ Remedy ปัญหานั้นให้กลับไปเป็นไปตามมาตรฐานที่กำหนดไว้ในข้อกำหนดได้ ไฟล์ที่มีรายการ issue ไม่สามารถสร้างใหม่ได้
<gw:IssueItems itemCount="1">
<gw:IssueItem>
<gw:TechnicalDescription>
/Info dictionary contained an unexpected key (/GTS_PDFXConformance).
</gw:TechnicalDescription>
<gw:IssueId>1670998746</gw:IssueId>
<gw:InstanceCount>1</gw:InstanceCount>
</gw:IssueItem>
</gw:IssueItems>
รายการปัญหาจะถูกรายงานด้วยเช่นกันเมื่อมีการพิจารณาแล้วว่าไฟล์นั้น ไม่เป็นไปตามข้อกำหนดเนื่องจาก policy การจัดการเนื้อหา (ในกรณีที่มีการใช้การตั้งค่า disallow)
แต่ละรายการ Sanitisation, Allowed Item, Remedy item หรือ Issue item จะมี ID ตัวเลขที่ไม่ซ้ำกัน เชื่อมโยงอยู่ เพื่อให้แอปพลิเคชันอื่นที่อาจต้องการประมวลผลรายงาน XML สามารถระบุรายการนั้นได้อย่างเฉพาะเจาะจง