Open XML应用安全(4)文档校验

Open XML应用安全(4)文档校验

Office应用程序打开一个Office文档时候,首先会进行校验,主要校验是该文档有效性和完整性。

当随便将一个exe文档后缀改为docx时候,打开该文件肯定会报文件无效。对于一个Open XML文档,如果想去校验它,可以从如下几个方面:

q  是不是ZIP压缩包

q  必须部件是否存在

q  关系是否完整

q  部件类型是否匹配

q  文件大小

q  宏和OLE对象

验证方式也很多,这里给出最简单方法,使用Open XML SDkOpenXmlValidator对象。代码清单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中看到验证一个文档很简单,只需使用OpenXmlValidatorValidate方法即可。该方法需提供一个WordprocessingDocument对象作为参数,并返回一个ValidationErrorInfo对象集合。ValidationErrorInfo对象会为们提供出现错误基本描述、类型、节点、路径和部件。

 

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

posted @ 2012-06-24 16:22  玄魂  阅读(912)  评论(0编辑  收藏  举报