博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Open XML应用安全(4)文档校验
阅读量:7235 次
发布时间:2019-06-29

本文共 1195 字,大约阅读时间需要 3 分钟。

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 安全揭秘》

转载地址:http://pjlfm.baihongyu.com/

你可能感兴趣的文章
fscanf()函数具体解释
查看>>
JS魔法堂:关于元素位置和鼠标位置的属性
查看>>
jquery.validate+jquery.form提交的三种方式
查看>>
分形之树(Tree)
查看>>
[HTML/CSS]盒子模型,块级元素和行内元素
查看>>
HDU1698_Just a Hook(线段树/成段更新)
查看>>
学习selenium所须要具备的技术
查看>>
shell程序之逐行读取一文件里的參数且使用此參数每次运行5分钟
查看>>
高质量c c++编程
查看>>
[詹兴致矩阵论习题参考解答]习题4.1
查看>>
SQL Server 索引和表体系结构(非聚集索引)
查看>>
JS或AS中处理ARGB、RGBA颜色值时要小心
查看>>
【LeetCode】144. Binary Tree Preorder Traversal (3 solutions)
查看>>
English Metric Units and Open XML
查看>>
[ES6] 01. Intro to ES6 and traceur compiler
查看>>
专业版Unity技巧分享:使用定制资源配置文件
查看>>
【插件开发】—— 12 GEF入门
查看>>
solr集成mmseg4j分词
查看>>
less语法(一)变量与extend
查看>>
android_launcher的源码详细分析
查看>>