当前位置: 老葡京网站娱乐 > 网页设计 > XML教程 > 正文

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

时间:2014-05-09

老葡京网站娱乐 www.sdguanhua.com 当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/

查看本栏目更多精彩内容:http://www.sdguanhua.com/web/XML/