用C++和XML建立Office智能文档之六

来源:天极网 作者:陶刚编译 2005-12-18 出处:pcdog.com

.net  web服务器  xml  安全  恶意代码  
下一页 1 2 
  安全性

  因为宏病毒和其它的脚本技术的恶意使用变得很普遍,Office在两个途径做了修改:通过提高默认的安全性设置,防止运行大多数没有签名的、潜在的恶意代码;通过增加安全性设置的数量,为即使没有数字签名的解决方案的运行提供了更多的管理权限。
这考虑了现实情况:很多Office解决方案(嵌入Word或Excel文档中的宏)都已经广泛的布署在大型组织中,要让它们完全安全将花费一定时间。如果新版本Office突然要求所有的解决方案必须有数组签名(理想的解决方案),这将给很多组织带来布署方面的障碍。但是,Office安全性设置的增加也使安全性更加复杂,在本文中我没有谈到这个主题。

  应用于宏和插件程序的相同的Office安全性设置也可应用于智能文档。这些设置包括:

  · 用户宏的安全性设置(高、中或低,在Tools | Macro | Security中设置;默认的是高)。

  · 智能文档是否从可信(trusted)位置载入:可信的文件系统目录(例如每个用户的或工作组模版目录)、公司局域网上的Web服务器或可信的Internet站点。

  · 智能文档组件是否是数字签名的,如果是,发行人是否在Tools | Macro | Security | Trusted Publishers设置为可信发行人。

  · 是否在Tools | Macro | Security | Trusted Publishers中选择了“相信所有安装了的插件程序和模版”。

  默认情况下,Tools | Macro | Security中的安全性层次被设置高,Office阻止任何没有数字签名的插件程序DLL(包含智能文档操作DLL)的载入。上面列举的安全性设置的其它组合可以允许智能文档被载入(可能给用户显示一个安全性提示),但是保证组织中的安全性的最好途径仍然是使用从VeriSign或GTE CyberTrust得到的数字证书对所有的已布署的解决方案(包括智能文档组件)进行数字签名。微软2003 智能文档SDK中的XMLSign.exe工具可以用于对XML智能文档清单文件进行数字签名。

  此外,如果某个Office智能文档解决方案是从Web服务器上运行的,微软Internet Explorer和Office安全性设置都会影响解决方案是否能运行。如果服务器上的XML扩展包清单文件既不在Internet Explorer可信站点中,也不在局域网区域,就不会试图检索它,也不会给用户提示把该站点添加到Internet Explorer可信列表站点列表中。如果XML扩展包清单文件位于可信的服务器或局域网上,清单是否被载入依赖于它是否签名了。如果它是签名了的,并允许运行,它仍然受到用户Office安全性设置的约束。

  在智能文档解决方案开发过程中,你可以通过编辑注册表的下述键下面的REG_DWORD值“DisableManifestSecurityCheck”激活或禁止XML扩展包清单文件安全性检查:
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Common\Smart Tag
如果它的值为1将禁止XML扩展包清单文件安全性检查,如果值为0就激活了它。当你试图引用某个XML扩展包清单文件的时候,如果这个注册表设置是1(禁止安全性检查),将出现一个对话框警告用户禁止安全性是危险的。它同时提供一个“确定”按钮,这个按钮允许你立即重新激活XML扩展包安全性检查。你应该仅仅在开发解决方案的时候把开发计算机的注册表的这个值设置为1(这个时候每次编译每个组件后进行数字签名可能不方便),但是要确保在签名后的组件的最后测试中激活它。在用户计算机上禁止XML扩展包清单文件安全性检查是非常不可取的。

  尽管本文讨论了在C++中智能文档操作DLL的建立,但是用Visual Basic .NET或C#建立受控操作DLL也是可行的。在那种情况下,将应用.NET框架组件安全性模型,但是这超出了本文讨论的范围。


更多内容请看PCdog.com--C/C++进阶技术文档  C/C++应用实例  Office技巧专区专题
下一页 1 2 
上一篇:VC为对话框添加最小化按钮和提示条
下一篇:COM编程技术基础概述之七