字体:  

【资源分享】Internet Explorer 8系列文章之一:IE的金钟罩和铁布衫

longbowjn 发表于: 2008-9-19 01:15 来源: 远景无限博客

关键字:IE 8、安全、DEP、用户ActiveX控件、多标签浏览
作者: WinTEC 技术专家社区 刘晖
因为普及率高,所以有很多人在研究针对IE的攻击技巧以及漏洞;而因为和Windows紧密集成,IE的安全问题往往可能会影响到整个系统。因此微软采取了很多方法提高IE的安全性。除了IE 7中出则的安全功能外,在IE 8中也有很多新的安全特性,可以进一步保护IE以及整个系统的安全,这是本文要介绍的内容。
数据执行保护(DEP)数据执行保护(DEP)是从Windows XP SP2时候开始出现的新功能,在启用该功能后,系统会将所有不属于程序执行代码的代码标记为不可执行(NX)的,这样带有“不可执行”标记的代码将无法被执行,这样做可以有效防范缓冲区溢出等常见的攻击方式。
然而对于IE则一直存在一个问题,为了实现各种不同的功能,IE中往往会被安装不同的加载项,但是原本的加载项存在一个很大的问题,如果针对IE启用DEP功能,这些加载项的运行可能会遇到问题。因此为了改善兼容性,默认情况下DEP功能并不会针对IE生效。
但在IE 8中,因为有了全新的DEP/NX API(需要Windows Server 2008以及Windows Vista SP1配合),我们可以在针对IE 8启用兼容性的同时维持和老版本加载项的兼容性(如图1所示),这样不仅提高了安全性,而且保证了一定的兼容性。同时这个功能不需要任何额外的设置,默认的设置即可生效,并有效保护我们的系统。

ActiveX控件控制在IE的所有安全问题中,ActiveX控件是最受争议的,虽然ActiveX控件极大地增强了IE的功能,然而因为存在着很大幅度的滥用情况,因此很多恶意软件,甚至间谍软件也在借助ActiveX控件影响整个系统。
在IE 8中,微软已经针对ActiveX控件采取了很多新的措施,可以在保证易用性的同时进一步提升安全性。首先就是每用户(Pre User)ActiveX控件。在以前,安装的所有ActivX控件都将针对本机的所有用户生效,同时也要求用户必须具有管理员权限才能安装ActiveX控件。但在IE 8中,因为有了这种全新的ActiveX控件方式,用户可以在没有管理员权限的情况下安装控件(要求控件支持这一全新的特性),这种情况下该控件将只能安装给当前用户,并只影响该用户,不会对系统中的其他用户或者系统本身产生影响。
对于这种全新形式的ActiveX控件,在单击地址栏下方的信息栏后,可以从弹出菜单中选择将该控件安装给当前用户,或者安装给本机的所有用户(如图2所示)。如果需要安装给本机的所有用户,则要求提供管理员权限,并且在Windows Vista下还需要经过UAC的提升。

注:该图未截取中文版,如果需要中文版截图,请提供一个支持该功能的控件下载地址。
对于只安装给当前用户的控件,其他用户将无法使用。而且如果该控件是恶意的,也只能对当前用户生效,如果其他用户使用IE,并不会受到该控件的影响。
在默认设置下,就算成功安装了某个ActiveX控件,如果所访问的网页需要该控件,控件也无法自动运行,而是需要用户的批准。这主要是为了预防伴随其他软件***的恶意ActiveX控件对系统产生影响。例如目前很多共享软件中都***了第三方的组件,在安装这样的软件时,我们可能不知不觉中就给系统中安装了未知的,甚至是恶意的ActiveX控件。而这样的控件如果需要在IE中运行,则必须通过我们的批准(如图3所示)。

同时,从图4中可以看出,这个行为有两个选项,如果选择“运行该加载项”,那么以后在该网站上遇到这个加载项的时候,IE都会直接运行,而不询问,但如果其他网站需要同样的加载项,则IE会再次询问。但如果选择“在所有网站上运行加载项”,则以后无论访问哪个网站,如果需要运行该加载项,IE都将不再询问,直接运行。

这个功能最主要是为了预防在安装其他软件时***安装的ActiveX控件,因此对于下列类别的控件,默认都将直接运行:
l 专用列表中定义的常用控件
l 在升级到IE 8之前已经使用过的控件
l 通过IE安装的控件
多线程和多进程从IE 7开始,IE中增加了标签浏览的功能。简单来说,该功能可以在一个IE窗口(IE进程)中使用“多线程”的方式提供多个标签,每个标签对应一个打开的网页(如图5所示)。

这样做虽然可以用最小的开销(主要是内存占用)提供多标签浏览功能,然而这样做的不足是显而易见的:因为所有标签都隶属于同一个进程,因此一个标签出现问题往往会导致整个进程下打开的所有标签都遇到同样的问题。
例如,现在的很多网站为了实现更快的页面加载时间以及更丰富的功能,往往使用了富客户端技术,将以往需要在服务器上处理的操作利用脚本或控件的方式在客户端上处理。这样做虽然加快了网页的打开速度,然而因为有时候网页上包含了太多需要处理的内容,往往会导致IE进程停止响应甚至崩溃。
在IE 7中,因为所有标签都属于同一个IE进程,因此一旦某个标签中显示的内容导致IE不响应,那么同一进程下的其他所有网页都将暂时不可用。而且一旦某个标签下的内容导致IE崩溃,其他标签都将被自动关闭。
在IE 8中,默认情况下,每个打开的标签都对应了一个单独的IE进程(如图6所示)。这样操作唯一的不足就是增大了内存的占用,然而好处也是显而易见的,至少一个网页不响应或崩溃不会影响到其他网页(哪怕这些网页都作为标签出现在同一个IE窗口中)。

从上图中可以看出,当前打开了三个网页标签,但任务管理器中显示了四个iexplore.exe进程,其实多出的一个进程对应了最大的IE窗口,其他三个进程则对应了每个标签。如果使用微软的另一个工具Process Explorer,则可以看到这些进程之间的父子关系(如图7所示)。

另外对于多标签浏览功能的一个改进则是崩溃恢复机制。虽然采取了通过多线程方式实现的标签浏览功能,一个网页的崩溃通常不会导致其他网页都被关闭,然而在某些极端的情况下,其他网页可能依然会受到某个崩溃网页的影响,全部消失。如果在这时候我们正在进行一些重要的操作,例如通过长时间的搜索,刚找到了几个需要浏览的网页;或者在论坛上发帖,内容才写了一半,可想而知,这样受到的损失是非常大的。
在IE 8中,一旦发生了所有IE进程受到影响自动关闭的情况,那么IE会自动尝试恢复。我们可以进行下列试验:在IE 8窗口中打开多个标签,并浏览不同的内容,然后打开Windows任务管理器,打开“进程”选项卡,并强制结束某个iexplore.exe进程。如果结束的是对应了某个标签的进程,那么IE 8会在该进程被结束后自动重新启动一个新的iexplore.exe进程,并显示被关闭的进程之前显示的网页内容。
另外,最令人称道的地方在于,如果被结束的进程对应的网页上有文本框,而我们在文本框中输入了文本(例如在论坛上发帖或者在搜索引擎上输入搜索关键字),在该网页被自动恢复的同时,文本框中已经输入的内容也会被自动恢复。
如果被结束的iexplore.exe进程对应了最大的IE窗口,那么在下一次启动IE 8的时候,则会看到下图所示的界面。只要选择“还原上次会话”,IE就会自动打开之前查看的所有标签,同时如果某个网页的文本框中已经输入了文字,这些文字也会恢复。

除了可以自动恢复被关闭的网页以及在网页文本框中输入的文字外,该功能还可以自动恢复每个标签的网页浏览记录(也就是前进和后退按钮转向的浏览记录),以及恢复每个标签的显示顺序。

最新回复

小小学生 at 2008-9-19 04:46:07
IE8B1和B2都用不来啊
小小学生 at 2008-9-19 04:46:32
不知道正式版出来后会不会好点
血竹 at 2008-9-19 12:05:16
期待ie8正式版

据说是11月份出正式版
bryno1 at 2008-9-30 11:05:18
我下不到IE6.0.29,就只好装了个IE8,感觉界面比较怪,还有那个YHOO的搜索太碍眼了.
huhen at 2008-9-30 17:32:31
11月马上就到了