天天看點

Open XML應用安全(4)文檔校驗Open XML應用安全(4)文檔校驗

當Office應用程式打開一個Office文檔的時候,首先會進行校驗,主要校驗的是該文檔的有效性和完整性。

當随便将一個exe文檔的字尾改為docx時候,打開該檔案肯定會封包件無效。對于一個Open XML文檔,如果想去校驗它,可以從如下幾個方面:

q  是不是ZIP壓縮包

q  必須的部件是否存在

q  關系是否完整

q  部件類型是否比對

q  檔案大小

q  宏和OLE對象

驗證的方式也很多,這裡給出最簡單的方法,使用Open XML SDk中的OpenXmlValidator對象。代碼清單14-24是如何驗證一個Word文檔有效性的方法。

代碼清單14-24  驗證文檔有效性

public static void ValidateWordDocument(string filepath)

{

    try

    {

        OpenXmlValidator validator = new OpenXmlValidator();

        int count = 0;

        foreach (ValidationErrorInfo error in

            validator.Validate(

                WordprocessingDocument.Open(filepath, true)))

        {

            count++;

            Console.WriteLine("Error " + count);

            Console.WriteLine("Description: " + error.Description);

            Console.WriteLine("ErrorType: " + error.ErrorType);

            Console.WriteLine("Node: " + error.Node);

            Console.WriteLine("Path: " + error.Path.XPath);

            Console.WriteLine("Part: " + error.Part.Uri);

            Console.WriteLine("-------------------------------------------");

        }

        Console.ReadKey();

    }

    catch (Exception ex)

        Console.WriteLine(ex.Message);

}

在代碼清單14-24中看到驗證一個文檔很簡單,隻需使用OpenXmlValidator的Validate方法即可。該方法需提供一個WordprocessingDocument對象作為參數,并傳回一個ValidationErrorInfo對象的集合。ValidationErrorInfo對象會為我們提供出現錯誤的基本描述、類型、節點、路徑和部件。

--------------注:本文部分内容改編自《.NET 安全揭秘》

本文轉自玄魂部落格園部落格,原文連結:http://www.cnblogs.com/xuanhun/archive/2012/06/24/2560134.html,如需轉載請自行聯系原作者