Open XML应用安全(3)隐藏数据

简介:

Open XML应用安全(3)隐藏数据

这里隐藏数据是指Office文档默认存储一些基本属性信息,很有可能会包含一些敏感信息,比如公司、创建者、签名、评论

针对隐藏信息,Office们提供文档检查器。可以按照信任中心→个人信息选项→文档检查器方式打开文档检查器。如图14-26所示。

14-26  文档检查器

文档检查器是用来检查隐藏信息,并提供删除功能。现在再来看Office定义个人信息,包括如下各项:姓名和缩写、公司和组织名称、计算机名、网络服务器和硬盘驱动器、其文件属性和摘要信息、OLE对象、文档不同版本作者信息、文档修订信息、文档版本信息、模板信息、隐藏文本、修订和批注。

当执行检查操作时候,会列出含有隐藏信息项,并给出删除功能,如图14-27所示。

14-27  文档审查结果

如果想实现更灵活功能,可以在代码中调用文档检查器。在C#中,可以通过调用Microsoft.Office.Core.IdocumentInspector接口来调用文档检查器功能。如果VSTO编程基础,可以编写一个Office插件来实现一些自定功能。当然,使用Open XML SDK 提供API可以更方便实现操作隐藏信息功能。代码清单14-22是一个检索Word文档属性例子。

代码清单14-22  检索Word文档属性

public static void GetPropertyFromDocument(string document)

{

   XmlDocument xmlProperties = new XmlDocument();

 

   using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, false))

   {

      ExtendedFilePropertiesPart appPart = wordDoc.ExtendedFilePropertiesPart;

 

      xmlProperties.Load(appPart.GetStream());

   }

   XmlNodeList chars = xmlProperties.GetElementsByTagName("Characters");

 

   MessageBox.Show(chars.Item(0).InnerText);

}

在代码清单14-22中,只需注意它是如何提取属性信息即可,只需调用WordprocessingDocument对象ExtendedFilePropertiesPart属性即可。

通过上面例子想告诉各位读者是,所有隐藏信息都会作为文档属性存在,只要去看看API帮助文档就会解一切。同时使用Open XML SDKAPI开发起来要比VSTO容易得多。加深印象,再来看一个移除隐藏文字例子,如代码清单14-23所示。

代码清单14-23  移除隐藏文字

public static void DeleteHiddenText(string filepath)

{

    // Given a document name, delete all the hidden text.

    using (WordprocessingDocument wdDoc =

        WordprocessingDocument.Open(filepath, true))

    {

        Body body = wdDoc.MainDocumentPart.Document.Body;

        var hiddens = body.Descendants<Vanish>();

        foreach (var hidden in hiddens)

        {

            var run = hidden.Parent.Parent;

            run.Remove();

        }

    }

}

在代码清单14-23中,关键代码只有一句:

var hiddens = body.Descendants<Vanish>();

其中,对象Vanish代表隐藏文字。

隐藏数据修改这里就再不演示,读者在解原理之后,在需要时候可以通过Office工具或者自己动手编写代码来消除安全隐患。

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



本文转自玄魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/archive/2012/06/24/2560126.html,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
XML 前端开发 数据格式
请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
【2月更文挑战第22天】【2月更文挑战第67篇】请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
80 2
|
7月前
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
96 0
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
112 0
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
50 1
|
4月前
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
176 7
使用Java和XPath在XML文档中精准定位数据
|
7月前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
143 1
|
2月前
|
XML Web App开发 数据格式
HTML 页面显示 XML 数据
10月更文挑战第2天
|
2月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
528 0
|
4月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
115 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
7月前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
84 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。