面对IE保护模式的开发者生存之道.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面对IE保护模式的开发者生存之道

面对IE保护模式的开发者生存之道 ? 在微软开发者大会上看到Vista和IE 7之后,我已经表示它们的保护模式不仅仅阻挡了间谍软件,也让合法的IE插件变得非常困难。当我试用了Vista beta 2之后,我体验到了这种困难——我的产品之一是一个IE工具栏,保护模式破坏了它的许多主要功能,因为这个工具栏需要与IE之外的另一个进程进行通信。经过多次尝试,我最终让这些功能又可以正常使用了。关于如何在这种安全模式下对自己的应用程序做出必要的修改,我根据自己的经历总结出一些经验,希望和有这方面需求的朋友分享。 ?? 这篇文章假定你已经熟悉C++、GUI和COM编程。示例代码是使用Visual Studio 2005、WTL 7.5和Windows SDK建立的。如果你想更多的了解WTL,可以查看我的关于WTL的系列文章(/wtl /wtl4mfc1.asp)。WTL只用于图形化界面;本文介绍的概念适用于所有应用程序,没有依赖于任何类库。 一.介绍保护模式 ?? IE浏览器的保护模式是Vista中的一个新功能,是类似用户帐号控制(UAC)的一种安全功能。在保护模式下,通过限制运行在IE进程下的代码不能修改 系统部分文件,从而来保护计算机的安全。这样,即使一个恶意网页利用了IE或IE插件中的一个代码注入漏洞,注入的代码也不能够对系统造成破坏。 ?? 在我们深入了解保护模式对IE插件开发者意味着什么之前,我们需要先快速了解一下相关的安全功能。 1.完整性级别和UIPI ?? Vista引入了一种叫做强制完整性级别的安全对象新属性。分为四个级别: ? ·系统:被操作系统组件使用,不应被应用程序所使用; ? ·高:在提升的完全管理权限下运行的进程; ? ·中:正常方式启动的进程; ? ·低:被IE和Windows Mail使用来提供保护模式。 ? Windows中关于进程的信息包含它是使用哪一个完整性级别启动的。一旦该进程启动后这个级别永远不会发生改变,它只能在进程被创建的时候被设定。一个进程的完整性级别具有以下三个主要的作用: ? (1)这个进程所创建的任何安全对象具有与它相同的完整性级别。 ? (2)这个进程不能够存取完整性级别比它高的资源。 ? (3)这个进程不能发送Windows消息到具有更高完整性级别的进程。 ?? 这不是一个完整的列表,但是以上所列的三个是对插件具有最大影响的。前两条防止一个低完整性的进程篡改IPC资源,例如共享内存,包含敏感数据或一个应用程序正常运行所需要的数据。最后一条被称为用户界面特权隔离(UIPI),被设计来防止类似粉碎窗口攻击(shatter attack)之类的攻击,在粉碎窗口攻击中,攻击者通过发送给进程一个它不希望收到的消息,从而导致它运行非信任的代码。 2.虚拟化 ?? 虚拟化(在某些微软文档中又被叫做重定向)功能可以防止一个进程修改注册表和文件系统中的保护区域,但是依然允许这个应用程序正常的运行。对中等完整性级 别的进程来说,这个保护区域是诸如HKLM、system32和Program Files目录之类的系统关键区域。一个低完整级别的进程受限制性更大——它只能对特定的低权限的注册表和文件系统区域进行写操作,任何对这些区域外部进 行写操作的行为都将被阻止。 ?? 当一个进程试图对它没有权限的区域进行写操作的时候,虚拟化功能都会阻止它们并且把这个写操作重定向到当前用户配置文件下的目录(或者注册表键值),这个 写操作实际上在这儿发生。然后当这个应用程序试图读这个数据的时候,读操作同样被重定向,因此这个应用程序将看到它以前写的数据。 ?? 因为虚拟化功能不再能完成像替其他进程写注册表之类的功能,因此它影响IE扩展插件的编写。另外,IE扩展插件写数据文件的区域也非常有限制——只有像收藏夹(Favorites)、Cookies等IE特定的目录可以写。 3.何时保护模式被打开? ?? 在Vista的默认设置中,IE一直运行在保护模式。如下图所示,从状态栏中可以看到保护模式被打开的提示: ?? 你可以通过禁用用户帐号控制(UAC)来完全关闭保护模式,或者通过在IE选型对话框的安全标签中把启用保护模式前面的复选框去掉勾选。你还可以通过运行一个新的提升权限的IE实例来临时的跳过保护模式,但是请记住这样做将使IE运行在高完整性等级,而不是像普通应用程序的中等完整性。 二 示例应用程序和扩展插件 ? 本文中的示例代码包含了两个项目。第一个项目,IEEExtension,是停靠在IE窗口底部的一个条形窗口: ?? 第二个项目,DemoApp,是一个与上面的应用通信的EXE程序。DemoApp本身不完成太多任务,比较有趣的部分是与这个EXE程序通信的IEExtecn

文档评论(0)

zhuliyan1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档