一种浏览网页的方法及装置的制作方法

文档序号:6443824阅读:135来源:国知局
专利名称:一种浏览网页的方法及装置的制作方法
技术领域
本发明涉及浏览器安全技术领域,特别是涉及一种浏览网页的方法及装置。
背景技术
随着时代的进步,互联网已经成为人们生活的重要组成部分,而Web浏览器也理所应当地成为计算机等设备中最为重要的软件之一。浏览器提供了 BHCKBrowser Helper Object)、AxtiveX控件、工具栏组件接口,可以以插件/控件的形式定制、完善浏览器功能。但是,随着Web浏览器重要性的日益突出,恶意软件、木马、间谍软件等网络攻击也呈现逐渐的上升,尤其是浏览器插件,由于插件/控件程序由不同的发行商发行,其技术水平也良莠不齐,经常存在安全漏洞,因此容易会成为木马、病毒的重点攻击目标。例如,研究发现Adobe Flash> Windows Media Player、Realplayer 等常用插件都极易受到攻击。利用浏览器插件的安全漏洞,病毒能够获取用户的系统权限,向用户的计算机下载、安装、运行恶意代码,窃取用户的个人信息(如网上银行信息、电子邮件、游戏密码)等等,对用户的系统安全造成严重的影响。此外,也有部分插件本身就是恶意插件,例如广告软件(Adware)或间谍软件 (Spyware)等。此类恶意插件程序可以监视用户的上网行为,并把所记录的数据报告给插件程序的创建者,以达到投放广告、盗取游戏或银行帐号密码等非法目的。为了提高用户上网时的安全性,通常可以将浏览器技术与沙箱技术相结合。沙箱是一个虚拟系统程序,通过虚拟化的磁盘、内存以及网络资源,提供了一种程序的隔离运行机制。在沙箱中运行的程序,创建、修改、删除的所有文件和注册表内容都会被虚拟化重定向,确保程序无法对系统关键部位进行改动,破坏系统的真实环境。现有技术中,通常是直接将浏览器进程放入到沙箱中运行,这样可以从一定程度上确保用户上网时的安全性。但是,由于插件/控件设计水平上的限制,在运行时,经常会出现插件/控件的卡死、崩溃等不稳定现象,进而也导致整个页面进程也随之失去响应,影响浏览器的稳定性。因此,迫切需要本领域技术人员解决的技术问题就在于,如何在确保上网浏览安全性问题的同时,提高浏览器运行的稳定性。

发明内容
本发明提供了一种浏览网页的方法及装置,能够在确保上网浏览安全性问题的同时,提高浏览器运行的稳定性。本发明提供了如下方案一种浏览网页的方法,包括当页面线程创建插件/控件对象时,为所述插件/控件对象创建与页面进程相独立的插件/控件进程;将所述独立的插件/控件进程放到沙箱中运行;
通过实现所述插件/控件进程与所述页面进程之间进行进程间通信,实现对网页的浏览;其中,所述页面进程运行于沙箱外。其中,所述实现所述插件/控件进程与所述页面进程之间进行进程间通信包括在所述独立的插件/控件进程中创建主窗口对象及浏览器宿主对象,将所述浏览器宿主对象连接到所述主窗口对象上,以便所述页面进程通过所述主窗口向所述插件/控件进程发送消息。其中,所述页面进程通过所述主窗口向所述插件/控件进程发送消息包括所述页面进程通过所述主窗口向所述插件/控件进程发送鼠标、键盘响应事件消肩、ο其中,所述实现所述插件/控件进程与所述页面进程之间进行进程间通信包括当沙箱内的插件/控件进程需要向沙箱外发出指令时,判断该指令是否为向所述插件/控件进程发出的,并且属于预置的通讯指令集,如果是,则将该指令放行,以便所述插件/控件进程向所述页面进程进行发送消息。其中,所述插件/控件进程向所述页面进程进行发送消息包括当所述插件/控件进程有脚本需要调用时,将所述脚本转发到创建该插件进程的页面进程中;或者,当所述插件/控件进程产生绘制事件时,将所述绘制事件对应的数据发送给对应的页面进程。一种浏览网页的装置,包括独立进程创建单元,用于当页面线程创建插件/控件对象时,为所述插件/控件对象创建与页面进程相独立的插件进程;沙箱驱动单元,用于将所述独立的插件/控件进程放到沙箱中运行;进程间通信单元,用于通过实现所述插件/控件进程与所述页面进程之间进行进程间通信,实现对网页的浏览。其中,所述进程间通信单元包括第一通信子单元,用于在所述独立的插件/控件进程中创建主窗口对象及浏览器宿主对象,将所述浏览器宿主对象连接到所述主窗口对象上,以便所述页面进程通过所述主窗口向所述插件/控件进程发送消息。其中,所述第一通信子单元具体用于所述页面进程通过所述主窗口向所述插件/控件进程发送鼠标、键盘响应事件消肩、ο其中,所述进程间通信单元包括第二通信子单元,用于当沙箱内的插件/控件进程需要向沙箱外发出指令时,判断该指令是否为向所述插件/控件进程发出的,并且属于预置的通讯指令集,如果是,则将该指令放行,以便所述插件/控件进程向所述页面进程进行发送消息。其中,所述第二通信子单元具体用于当所述插件/控件进程有脚本需要调用时,将所述脚本转发到创建该插件/控件进程的页面进程中;
或者,当所述插件/控件进程产生绘制事件时,将所述绘制事件对应的数据发送给对应的页面进程。根据本发明提供的具体实施例,本发明公开了以下技术效果通过本发明,由于将插件/控件从浏览器页面进程中独立出来,并且将插件/控件进程实时放入到沙箱中运行,因此,能够在保证用户上网安全性的同时,避免由于插件/控件的卡死或崩溃等现象引起浏览器页面失去响应的现象,进而提高浏览器运行的稳定性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的方法的流程图;图2是本发明实施例提供的装置的示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。首先需要说明的是,发明人在实现本发明的过程中发现,在传统的实现方式下,插件/控件和页面在同一个进程中,当有恶意程序或者插件,通过BHO、AxtiveX控件、工具栏组件等方式,在浏览器进程过程中加载时,这样的对象会在与浏览器相同的上下文中运行,并能对可用的窗口和模块执行任何行动。例如,一个BHO能够探测到典型的事件,如 GoBack, GoForward, DocumentComplete等,另外BHO能够存取浏览器的菜单与工具栏并能做出修改,还能够产生新窗口来显示当前网页的一些额外信息,还能够安装钩子以监控一些消息和动作,从而可能会对用户的系统带来安全隐患。另一方面,也正是由于插件/控件和页面在同一进程中,因此,当插件/控件出现卡死、崩溃等不稳当情况时,就会导致整个页面进程失去响应,影响浏览器的稳定性。基于上述分析,本发明实施例试图提供一种新的浏览网页的方法,通过该方法来达到确保上网浏览安全性问题的同时,提高浏览器运行的稳定性的目的。参见图1,本发明实施例提供的浏览网页的方法可以包括以下步骤SlOl 当页面线程创建插件/控件对象时,为所述插件/控件对象创建与页面进程相独立的插件进程;一般而言,如果一个页面中存在插件,则在该页面加载的过程中,页面进程会创建插件/控件对象,在传统的方式下,就会直接在页面进程中创建插件/控件对象,而在本发明实施例中,在页面进程创建插件/控件对象时,可以为该插件/控件对象创建独立于页面进程的插件/控件进程。也即,使得插件/控件与页面在不同的进程中,这样,如果插件发生了卡死或者崩溃等现象,由于不会对其他进程的运行造成影响,因此,也就不会使得页面发生随之失去响应的现象,避免使浏览器的稳定性受到影响。S102 将所述独立的插件/控件进程放到沙箱中运行;由于插件/控件被木马、病毒攻击的可能性比较大,因此,在本发明实施例中,将为插件/控件对象创建的独立进程放入到沙箱中运行,这样,可以避免由于插件/控件而给用户的系统安全造成威胁。S103 通过实现所述插件/控件进程与所述页面进程之间进行进程间通信,实现对网页的浏览;其中,所述页面进程运行于沙箱外。插件/控件作为对浏览器功能的补充或完善,在实现一些浏览器功能时,需要页面与插件/控件相互配合来完成。而在本发明实施例中,由于页面和插件/控件在不同的进程中,因此,还要使得页面与插件/控件之间能够进行必要的信息交互,这样才能保证浏览器功能的实现。这里所谓的信息交互包括两种情况,一种情况是页面进程需要发送消息给插件/控件进程,另一种情况就是插件/控件进程需要发送消息给页面进程。为了使得页面进程能够发送消息给插件/控件进程,在将插件从浏览器页面进程中独立出来,并将插件/控件进程放入到沙箱中的同时,还需要在独立的插件/控件进程中创建主窗口对象及浏览器宿主对象,并将浏览器宿主对象连接到主窗口对象上。由于操作系统中的消息交互是基于窗口进行的,当在插件/控件进程中创建了主窗口对象并连接到浏览器宿主对象之后,当页面需要向插件/控件发送消息时,就可以向该插件/控件的主窗口发送,这样,插件/控件进程就可以通过该主窗口接收页面进程发送的消息。具体实现的过程中,页面进程在多种情况下都可能会向插件/控件进程发送消息。例如,可以由浏览器页面进程接管插件/控件进程中的鼠标、键盘等响应事件,并通过消息转发机制通知给沙箱内的插件进程,再由插件/控件进程执行相应的操作。这些鼠标、 键盘响应事件具体可以包括当页面进程对象改变窗口大小、页面刷新等事件时,页面进程可以通知插件/控件进程对象调整插件的大小、位置,等等。或者,当页面关闭或者浏览器退出时,还可以通知插件/控件进程,完成插件/控件对象的释放和销毁等操作,等等。而为了使得插件/控件进程能够发送消息给页面进程,由于页面进程自身存在窗口对象,因此不必再为页面进程创建窗口对象,但是在本发明实施例中,由于插件/控件进程在沙箱内,而浏览器页面进程在沙箱外,此时,如果插件/控件进程需要在沙箱内与沙箱外的浏览器页面进程进行进程间通讯时,由于沙箱的安全性限制,插件/控件进程向沙箱外的操作指令会被沙箱虚拟环境屏蔽,因此,需要沙箱做特殊处理,放过插件/控件进程必要的指令到沙箱外,以通知外部的浏览器页面进程,同时,外部的浏览器页面进程也可以把一些用户操作的指令(例如用户点击了某链接,或者点击“停止”、“播放”按钮等等)通知给沙箱内的插件/控件进程执行相应的处理工作。当然,为了确保安全性,并不能让插件/控件进程发出的所有消息都能发送到沙箱外,为此,可以预先定义必要的指令集,沙箱放过内部插件/控件进程向外发出的这些指令集,从而保证浏览器的正常运行。换言之,为了保证浏览器能够正常运行,沙箱可以允许一些指令发出到沙箱外,但是前提有两点第一,该指令是由插件/控件进程发出的,第二, 该指令属于预先定义的通讯指令集,只有当这两个条件同时满足时,才能放行,以保证系统的安全性。当然,在上述的具体实现时,除了上述定义通信指令集的方式之外,还可以通过其他方式实现,例如,可以通过管道机制来实现,等等,这里不再赘述。在具体实现时,这些可以从沙箱内放过的指令可以包括多种情况。例如,由于页面与插件/控件具有对应性,因此为了保证运行中的正确性,如果独立进程中的插件需要执行某事件,则需要将对应的脚本放入到创建该插件/控件进程的页面线程中区,在该页面线程中运行该脚本。为此,插件/控件进程还可以维护一份插件/控件主窗口与页面线程之间的映射关系,用来保证页面线程与插件/控件线程的一一对应。当插件/控件进程中需要运行某脚本时,就可以通过该映射关系找到对应的页面线程,并将该脚本放入到该页面线程中运行。显然,当插件/控件进程发出的消息时这种消息时,就应该将该消息放过, 也即允许将该消息发出到处于沙箱外的页面线程,可以将这种消息写入到通讯指令集中。此外,由于插件/控件进程是在沙箱内运行的,因此,为了使得插件/控件进程涉及到的与界面相关的内容能够展现给用户,还需要插件/控件进程将界面相关的内容、显示的位置、大小等数据发送给对应的浏览器页面进程,由浏览器页面进程绘制界面显示结果(具体的,页面进程可以调用插件/控件进程的IViewObject: :Draw方法,完成插件/控件对象内容的绘制及显示),这样,用户就能够看到相关的界面显示结果。同样的,插件/控件进程发出的这种绘制消息也可以从沙箱内放过,可以将这种消息写入到通讯指令集中。需要说明的是,在实际应用中,可能并不是所有的插件/控件都是允许与所在页面的进程独立的,例如,一些网银的控件,如果放到与页面进程相独立的另一个进程中,则可能无法实现相应的功能。因此,在具体实现时,可以仅针对一些播放器、flash等独立性强的插件/控件,或者在将插件/控件进程独立出来之后不会影响到具体功能实现的插件/ 控件,使用本发明实施例的方案来实现,其他的插件/控件仍然使用已有技术来实现即可。总之,通过本发明实施例提供的浏览网页的方法,由于将插件/控件从浏览器页面进程中独立出来,并且将插件/控件进程实时放入到沙箱中运行,因此,能够在保证用户上网安全性的同时,避免由于插件/控件的卡死或崩溃等现象引起浏览器页面失去响应的现象,进而提高浏览器运行的稳定性。与本发明实施例提供的浏览网页的方法相对应,本发明实施例还提供了一种浏览网页的装置,参见图2,该装置可以包括独立进程创建单元201,用于当页面线程创建插件/控件对象时,为所述插件/控件对象创建与页面进程相独立的插件/控件进程;沙箱驱动单元202,用于将所述独立的插件/控件进程放到沙箱中运行;进程间通信单元203,用于通过实现所述插件/控件进程与所述页面进程之间进行进程间通信,实现对网页的浏览;其中,所述页面进程运行于沙箱外。其中,进程间通信单元203具体可以包括第一通信子单元,用于在所述独立的插件/控件进程中创建主窗口对象及浏览器宿主对象,将所述浏览器宿主对象连接到所述主窗口对象上,以便所述页面进程通过所述主窗口向所述插件/控件进程发送消息。具体实现时,所述第一通信子单元具体可以用于所述页面进程通过所述主窗口向所述插件/控件进程发送鼠标、键盘响应事件消肩、ο或者,进程间通信单元203也可以包括
8
第二通信子单元,用于当沙箱内的插件/控件进程需要向沙箱外发出指令时,判断该指令是否为向所述插件/控件进程发出的,并且属于预置的通讯指令集,如果是,则将该指令放行,以便所述插件/控件进程向所述页面进程进行发送消息。具体实现时,所述第二通信子单元具体可以用于当所述插件/控件进程有脚本需要调用时,将所述脚本转发到创建该插件/控件进程的页面线程中;或者,当所述插件/控件进程产生绘制事件时,将所述绘制事件对应的数据发送给对应的页面进程。通过本发明实施例提供的浏览网页的装置,由于将插件/控件从浏览器页面进程中独立出来,并且将插件/控件进程实时放入到沙箱中运行,因此,能够在保证用户上网安全性的同时,避免由于插件/控件的卡死或崩溃等现象引起浏览器页面失去响应的现象, 进而提高浏览器运行的稳定性。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上对本发明所提供的浏览网页的方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种浏览网页的方法,其特征在于,包括当页面线程创建插件/控件对象时,为所述插件/控件对象创建与页面进程相独立的插件/控件进程;将所述独立的插件/控件进程放到沙箱中运行;通过实现所述插件/控件进程与所述页面进程之间进行进程间通信,实现对网页的浏览;其中,所述页面进程运行于沙箱外。
2.根据权利要求1所述的方法,其特征在于,所述实现所述插件/控件进程与所述页面进程之间进行进程间通信包括在所述独立的插件/控件进程中创建主窗口对象及浏览器宿主对象,将所述浏览器宿主对象连接到所述主窗口对象上,以便所述页面进程通过所述主窗口向所述插件/控件进程发送消息。
3.根据权利要求2所述的方法,其特征在于,所述页面进程通过所述主窗口向所述插件/控件进程发送消息包括所述页面进程通过所述主窗口向所述插件/控件进程发送鼠标、键盘响应事件消息。
4.根据权利要求1所述的方法,其特征在于,所述实现所述插件/控件进程与所述页面进程之间进行进程间通信包括当沙箱内的插件/控件进程需要向沙箱外发出指令时,判断该指令是否为向所述插件 /控件进程发出的,并且属于预置的通讯指令集,如果是,则将该指令放行,以便所述插件/ 控件进程向所述页面进程进行发送消息。
5.根据权利要求4所述的方法,其特征在于,所述插件/控件进程向所述页面进程进行发送消息包括当所述插件/控件进程有脚本需要调用时,将所述脚本转发到创建该插件进程的页面进程中;或者,当所述插件/控件进程产生绘制事件时,将所述绘制事件对应的数据发送给对应的页面进程。
6.一种浏览网页的装置,其特征在于,包括独立进程创建单元,用于当页面线程创建插件/控件对象时,为所述插件/控件对象创建与页面进程相独立的插件进程;沙箱驱动单元,用于将所述独立的插件/控件进程放到沙箱中运行;进程间通信单元,用于通过实现所述插件/控件进程与所述页面进程之间进行进程间通信,实现对网页的浏览。
7.根据权利要求6所述的装置,其特征在于,所述进程间通信单元包括第一通信子单元,用于在所述独立的插件/控件进程中创建主窗口对象及浏览器宿主对象,将所述浏览器宿主对象连接到所述主窗口对象上,以便所述页面进程通过所述主窗口向所述插件/控件进程发送消息。
8.根据权利要求7所述的装置,其特征在于,所述第一通信子单元具体用于所述页面进程通过所述主窗口向所述插件/控件进程发送鼠标、键盘响应事件消息。
9.根据权利要求6所述的装置,其特征在于,所述进程间通信单元包括第二通信子单元,用于当沙箱内的插件/控件进程需要向沙箱外发出指令时,判断该指令是否为向所述插件/控件进程发出的,并且属于预置的通讯指令集,如果是,则将该指令放行,以便所述插件/控件进程向所述页面进程进行发送消息。
10.根据权利要求9所述的装置,其特征在于,所述第二通信子单元具体用于 当所述插件/控件进程有脚本需要调用时,将所述脚本转发到创建该插件/控件进程的页面进程中; 或者,当所述插件/控件进程产生绘制事件时,将所述绘制事件对应的数据发送给对应的页面进程。
全文摘要
本发明公开了一种浏览网页的方法及装置,其中,所述方法包括当页面线程创建插件/控件对象时,为所述插件/控件对象创建与页面进程相独立的插件/控件进程;将所述独立的插件/控件进程放到沙箱中运行;通过实现所述插件/控件进程与所述页面进程之间进行进程间通信,实现对网页的浏览;其中,所述页面进程运行于沙箱外。通过本发明,能够在确保上网浏览安全性问题的同时,提高浏览器运行的稳定性。
文档编号G06F17/30GK102436507SQ201110448359
公开日2012年5月2日 申请日期2011年12月28日 优先权日2011年12月28日
发明者李锦伟, 陈志 申请人:奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1