专利名称:浏览器及客户端的制作方法
技术领域:
本发明涉及计算机网络技术领域,特别涉及一种浏览器及客户端。
背景技术:
目前,现有技术中的多进程浏览器体系结构系统均为将主进程和呈现进程分离以提升稳定性的设计。例如Google公司提出的多进程浏览器,这种多进程浏览器包括独特浏览器主进程和用于每一个浏览器实例的呈现内容区域的至少一个呈现进程。其中,主进程与一个或多个呈现引擎进程可以进行通信。通过这种方式,浏览器可以避免出错进程影响其他浏览器进程的结果,从而在增强用户体验的同时,提高用户效率。然而,这种多线程浏览器架构要么无法解决浏览器安全方面的风险,要么增加的限制导致兼容性的问题使浏览 器插件不能正常运行。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明的一个目的在于提出一种具有更高的安全性和健壮性的浏览器。本发明的另一目的在于提出一种客户端。为了实现上述目的,本发明第一方面实例提出了一种浏览器该浏览器可分成主进程和子进程结构,其中,主进程可以是用户启动的进程,也可以是用户启动的进程退出并构造另一个安全的主进程。其他进程都由这个主进程创建,在本申请中将其称为子进程,其中,子进程也可以创建孙进程。在本发明的一个实施例中,主进程拥有不高于资源管理器的默认权限,而子进程一般拥有不高于主进程的权限,并且主、子进程的权限受控制策略配置。具体来讲该浏览器包括主进程和多个子进程,其中,所述多个子进程由所述主进程创建,且所述多个子进程具有不同的权限,且所述多个子进程的权限不高于所述主进程的权限。根据本发明实施例的浏览器基于多进程浏览器架构,通过对不同功能进程的权限控制,增强了用户使用浏览器上网的安全性。且子进程间可通过主进程的调度和控制,与浏览器本身的内部机制和逻辑结合紧密,提高了程序的运行效率,用户体验以及用户效率。本发明另一方面的实施例提出了一种客户端,其包括Windows操作系统;以及上述第一方面实施例所述的浏览器。根据本发明实施例的客户端,基于已有的多进程浏览器架构,并结合沙箱的安全隔离技术,很大强度的增强了用户使用浏览器上网的安全性。并且将多进程与沙箱与浏览器本身的内部机制和逻辑结合的十分紧密,因此能极大提高程序的运行效率,用户体验以及用户效率。本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中图I为本发明实施例的浏览器的架构图;图2为本发明一个实施例的浏览器的架构图;图3为本发明一个实施例的浏览器的渲染子进程的示意图;以及
图4为本发明实施例的浏览器中的文件虚拟化的流程图。
具体实施例方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。以下结合附图首先描述根据本发明实施例的浏览器,该浏览器可分成主进程和子进程结构,其中,主进程可以是用户启动的进程,也可以是用户启动的进程退出并构造另一个安全的主进程。其他进程都由这个主进程创建,在本申请中将其称为子进程,其中,子进程也可以创建孙进程。在本发明的一个实施例中,主进程拥有不高于资源管理器的默认权限,而子进程拥有不高于主进程的权限,并且主、子进程的权限受控制策略配置。具体而言,参考图I或图2,本发明实施例的浏览器100包括主进程110和与主进程110相互通信且被主进程110控制的多个子进程。其中,多个子进程由主进程110创建,且多个子进程具有不同的权限。如图I或图2所示,多个子进程包括高权代理子进程120、浏览器应用扩展子进程130和渲染子进程140,其中,高权代理子进程120、浏览器应用扩展子进程130、渲染子进程140和主进程110之间具有不同的权限。且在本发明的一个实施例中,浏览器应用扩展子进程130包括Webkit核和/或IE核、渲染子进程140包括Webkit核和/或IE核(Webkit内核和/或IE内核)。当然在本发明的其他实施例中,该渲染子进程140还可以包括其他目前已有的浏览器内核,或今后发展的浏览器内核。在本发明的实施例中,主进程110是浏览器程序启动时的第一个程序,该主进程110的功能是显示和管理浏览器的整体外观和数据。具体地,该主进程110的权限与一般的Windows程序权限一致。高权代理子进程120是由主进程110启动的,高权代理子进程120的权限高于主进程110的权限,但高权代理子进程120在启动时需要用户的同意。高权代理子进程120用于帮助其他子进程进行一些高权限的操作,例如安装插件等。浏览器应用扩展子进程130和渲染子进程140也均由主进程110启动。在本发明的实施例中,为了对浏览器应用扩展子进程130和渲染子进程140的权限进行限制,本发明为浏览器应用扩展子进程130和渲染子进程140设置了限制的Token和Job,并进行了相应的API (稍后会详细介绍)。浏览器应用扩展子进程130用于运行扩展插件以及相应的JS代码,并将此插件的功能提供给其他子进程使用。渲染子进程140用于当浏览器的内核(例如Webkit核和/或IE核)打开ー个网站页面时,主进程110将会创建一个该渲染子进程140,并将这个网页的渲染管理等操作都放在这个进程中进行。由于本申请对具体的浏览器进程进行了划分,从而使得每个子进程的角色控制更加容易,且将浏览器应用扩展子进程130和渲染子进程140分别放入不同的限制进程中,因此大大地加强了浏览器架构的清晰度以及管理的便利性。在本发明的实施例中,多个子进程受主进程110的控制,例如,主进程110控制高权代理子进程120、浏览器应用扩展子进程130和渲染子进程140的开启和关闭。渲染子进程140包括一个或者多个,如图I所示,渲染子进程140为N个(渲染子进程I至渲染子进程N)。此外,主进程110还用于对多个子进程中的ー个子进程进行提权操作。具体地,提权操作有两种方式,一 种方式是主进程110接收多个子进程中的一个子进程的提权请求,由主进程110根据提权请求代理子进程进行操作。另ー种方式是由主进程110临时调整子进程的权限,并在子进程执行相应操作之后恢复子进程的权限至原有的权限。进ー步地,子进程可在主进程110提权之后进行读写操作、启动孙进程操作或访问SSL证书操作。即当主进程110代理子进程进行各种操作,如读写操作、启动孙进程操作或访问SSL证书操作。其中,孙进程为上述子进程创建的进程。对于主进程110创建的子进程以及对于子进程创建的孙进程而言,都需要进行进程的权限的限定,在本发明的示例中,通过设置Token/Job限制子进程或者孙进程的权限,即子进程或孙进程具有限制的令牌Token/Job,Token/Job用于对子进程或孙进程的权限进行限制。进ー步而言,对于子进程和孙进程的权限,还包括通过钩子Hook提权函数的限制进行限制,即子进程或所述孙进程之中还包括钩子Hook技术来拦截Windows API提供提权或虚拟化的功能。例如在子进程创建孙进程的时候,所述Hook提权功能用于获得所述子进程或所述孙进程的上下文,井根据所述上下文向所述主进程发送提权请求;再如子进程创建和写入文件的时候,Hook虚拟化功能将这个文件虚拟化到ー个安全的目录;又如访问SSL证书的时候,Hook提权功能用于将该线程的Token切换到高权限的Token。參见图2,渲染子进程进ー步包括Webkit渲染内核和/或IE渲染内核,Webkit渲染内核和/或IE渲染内核中至少ー个具有Token/Job以及Hook提权函数。如图2所示,在每个渲染子进程中,仅示出了包括一种渲染内核的渲染子进程,如一些渲染子进程包括Webkit渲染内核,另ー些渲染子进程包括IE渲染内核。但是本发明的实施例并不限于此,在一个渲染子进程中,也可以同时包括Webkit渲染内核和IE渲染内核。当然,本发明的实施例并不限于浏览器,其他客户端如頂,阅读器,播放器也可以采用这种方式实现。本发明实施例的浏览器基于多进程浏览器架构,通过对不同功能进程的权限控制,增强了用户使用浏览器上网的安全性。且进程间通过主进程的调度和控制,与浏览器本身的内部机制和逻辑结合紧密,提高了程序的运行效率,用户体验以及用户效率。具体地说,主进程110是程序启动时的第一个程序,其功能为显示和管理浏览器100的整体外观和数据。主进程110具有的权限通常被设置成不高于资源管理器的默认权限且由控制策略进行配置。高权代理子进程120是由主进程110创建并启动的,其权限被设置成不高于主进程110的权限,高权代理子进程120在启动的时候,需要用户的确认。另外,该高权代理子进程120的功能为辅助浏览器100的其他进程(如浏览器应用扩展子进程130和渲染子进程140)进行ー些需要高权限的操作,比如帮助浏览器应用扩展子进程130安装插件。浏览器应用扩展子进程130的功能为运行浏览器100中的扩展插件以及相应的Javascript(Js)代码,并将此插件的功能提供给浏览器100的其他进程使用。该浏览器应用扩展子进程130的权限被相应的限制,如图2所示,例如,浏览器应用扩展子进程130具有限制的令牌Token/Job以及若干API Hook中。參见图3,渲染子进程140包括Webkit渲染子进程141和/或IE渲染子进程142,也就是说,渲染子进程140至少包括Webkit渲染子进程141和IE渲染子进程142的其中ー个,当然也可同时包括多个Webkit渲染子进程141和/或多个IE渲染子进程142。如图3中,示出了包括I个Webkit渲染子进程141和I个IE渲染子进程142的渲染子进程140。且每个渲染进程中可包括多个渲染内核,如图3中示所示,Webkit渲染子进程141中包括N个Webkit渲染内核,IE渲染子进程142包括N个IE渲染内核。其中,Webkit渲染子进程的功能为当用户使用浏览器100的Webkit内核打开ー个网站页面时,主进程110将会创建ー个Webkit内核类型的Webkit渲染子进程,并将这个网页的渲染管理等操作都放在Webkit渲染子进程进行。该Webkit渲染子进程的权限被相应的限制,再次结合图2,例如,Webkit渲染子进程具有限制令牌Token/Job以及若干API Hook。当然,对于ー个渲染子进程140而言,其可同时包括Webkit渲染内核和IE渲染内核。IE渲染子进程的功能为当用户使用浏览器100的IE内核打开ー个网站页面吋,主进程110将会创建ー个IE内核类型的IE渲染子进程,并将这个网页的渲染管理等操作都放在这个进程中进行。同样地,如图2所示,该IE渲染子进程的权限被相应的限制,例如,IE渲染子进程具有限制令牌Token/Job以及若干API Hook。综上,本发明实施例的浏览器将进程分为主进程110、高权代理子进程120、浏览器应用扩展子进程130和渲染子进程140等4中类型,对每ー种进程分别进行权限控制,从图2中能够清晰地看出,浏览器应用扩展子进程130、渲染子进程和IE渲染子进程中分别具有相应的限制的令牌Token且被设置在相应的限制Job中,并设置有相关的Hook,体现出了不同的进程具有不同的安全级别的特点。这样,在提高网络完全的同时加强了上述浏览器的架构的清晰度以及对浏览器的架构的管理带来便利。上面提到的浏览器100的各种进程中,并不是単独各自进行工作的,而是相互协作来完成工作的。具体地,主进程Iio与高权代理子进程120、浏览器应用扩展子进程130 和渲染子进程140之间相互通讯,共同完成工作。作为ー个具体的示例,其通讯方式如下I、主进程110与高权代理子进程120之间的通讯。例如当主进程110要安装程序或插件吋,主进程110向高权代理子进程120发送通知,高权代理子进程120在收到通知后向用户提示是否同意安装程序或插件。这是由于主进程110的权限不允许安装程序或插件,需要启动ー个高权代理子进程120并通过高权代理子进程120向用户发起请求的提示。2、当浏览器应用扩展子进程130和渲染子进程140 (也可称之为Webkit渲染子进程和/或IE渲染子进程)处理对应权限之外的操作吋,浏览器应用扩展子进程130和渲染子进程140向主进程110发 送提权请求,主进程110根据浏览器应用扩展子进程130和渲染子进程140所对应的权限判断是否允许上述操作。例如,当浏览器应用扩展子进程130请求高权代理子进程120安装程序或插件,浏览器应用扩展子进程130将请求发送给主程序110,主进程110判断是否允许,如果判断为允许则将该请求转发至高权代理子进程120,否则主进程110取消该请求。这是由于浏览器应用扩展子进程130是受本身的令牌Token/Job以及若干API Hook,因此浏览器应用扩展子进程130的操作将受到限制,因此,通过主程序110对浏览器应用扩展子进程130的操作请求之前对操作进行判断,从而允许或限制该操作的发生,进ー步保证了系统的安全性。在本发明的另ー示例中,当浏览器应用扩展子进程130写某个目录的文件操作,但由于受限制而不能写吋,因此需要通知主进程110去帮助写这个文件,此时,主进程110对这个操作进行判断,得知是否允许该浏览器应用扩展子进程130做出这样的操作,从而避免系统受到攻击。渲染子进程140与主进程110之间的通讯和以上描述的浏览器应用扩展子进程130与主进程110之间的通讯方式类似,为了減少冗余,不做赘述。综上,从主进程110与各种不同角色的进程(高权代理子进程120、浏览器应用扩展子进程130以及渲染子进程140)之间的通信可以得知,不同的进程所处的角色是不一样的且对应的权限也不同,所以当这些进程进行进程间通信,需要做ー些代理操作时,主进程110会对这些进程做相应的权限检查,判断是否允许这些进程进行上述的操作,从而提升了系统的安全性。如图4所示,浏览器应用扩展子进程130和渲染子进程140具有至少ー个钩子Hook虚拟化函数以实现文件虚拟化。例如,当渲染子进程140对网页进行文件创建或写入操作吋,Hook虚拟化函数将网页存储至可写的虚拟化目录,并通知主进程110将网页文件拷贝至用户指定的目录。由此,解决了在包含权限限制的系统中导致的不兼容性问题,即某些软件没有遵循最小的权限原则,当系统调用被拒绝的时候将无法正常工作,例如IO操作。因此,采用文件虚拟化方式将对关键位置的改写操作重定向到非关键虚拟目录下,使得软件能继续正常运行。另外,为了加强对已有的程序兼容性,在本发明的ー个具体例子中,将本不可写的目录虚拟化到可写的虚拟化目录,通过钩子Hook函数(文件操作函数)来实现。本发明实施例通过钩子Hook函数实现文件虚拟化,有别于传统意义上使用Hook技术来限制系统调用导致的问题,由此,如果病毒绕过Hook,本发明实施例的浏览器应用扩展子进程130和渲染子进程140等使用的安全描述符ACL安全检查机制和Job机制将在系统内核层面将其阻止。进ー步地,当渲染子进程140对网页进行另存为操作吋,Hook虚拟化函数将网页存储至可写的虚拟化目录作为网页文件,并通知主进程110将网页文件拷贝至用户指定的目录。具体而言,根据浏览器100的逻辑还可实现浏览器的正常功能。例如,如果渲染子进程需要将网页另存为ー个文件,那么Hook虚拟化函数将会将该文件存至ー个可写的虚拟化目录,并通知主进程110将该文件拷贝到用户指定的目录。这是本发明实施例的浏览器100的其中ー项基本功能,该功能的实现和浏览器100的逻辑结合紧密,相比于通用的沙箱将上述网页另存为操作通过虚拟化方式相比,解决了用户无法在原本选择的目录下面找到相应的文件的问题,而可以在用户指定的目录下找到。在本发明的一个实施例中,渲染子进程140具有Hook进程启动函数,当渲染子进程140创建或启动孙进程吋,Hook进程启动函数检查子进程文件,如果判断所述孙进程属于预设的白名单,为所述孙进程设置于所述主进程相同的Token和Job。具体而言,当受限的渲染子进程140启动子进程,如果按照正常的路径启动,由于使用的Job机制,限制了子进程的启动,而且子进程启动后的Token中具有的权限是和渲染子进程140相同的,导致很多操作无法进行。因此通过本发明实施例的Hook进程启动函数改变子进程启动的路径,然后判断所启动的子进程是否位于预设的白名单中,预设的白名单所检查项目例如包括程序所属的公司签名以及程序名称,如果检查到公司签名以及程序名称存在于预设的白名单中,则使用主进程110继承来的一个权限相对较高的Token,并用系统中的 CreateProcessAsUser启动该子进程。由此,解决了用户在使用浏览器时很多正常的功能或插件(子进程)不能启用,影响用户体验的问题,提升了用户体验。 在本发明的另ー示例中,当渲染子进程140启动COM组件吋,如果判断COM组件属于预设的白名单,则渲染子进程140通知主进程110创建该COM组件,在主进程110创建COM组件之后,将COM组件对应的COM接ロ发送至相应的渲染子进程140。具体地,由于受限的渲染子进程140无法创建一些较高权限的COM组件,而这些COM组件又需要使用。那么使用类似于上述实施例2中所述的子进程启动的方式做相应的检查,检查通过之后,通知主进程110帮助创建COM组件,然后主进程110将创建成功的COM接ロ传送到相应的渲染子进程140中,从而实现创建COM组件的权限提升。作为ー个具体的例子,在通用的沙箱中,很多COM组件是无法启动的,如迅雷看看的插件,将很大程度上影响了用户的正常使用,通过上述方式创建COM组件能够在提升安全性的同时也不会影响到用户的正常使用,更加合理。进ー步地,当渲染子进程140打开受限对象的句柄时,渲染子进程140通知主进程110,在主进程110打开句柄之后将打开的句柄复制至渲染子进程140。具体地说,在受限的渲染子进程140中,由于浏览器110本身的功能逻辑需要,有些时候需要一些对象的句柄,而这些对象在当前的渲染子进程140的权限中是无法打开的,本发明的实施例通过将需要打开的目标对象的信息存储下来,并通过进程间通信的机制传送到主进程110,由主进程110帮助打开这个句柄,然后使用系统中的DuplicateHandle将主进程110的句柄复制到相应的渲染子进程140中,从而实现渲染子进程140打开对象句柄的功能。该方式与Hook相互配合,从而在浏览器100特定的逻辑中实现权限的突破,而在其他时候保持权限的限制。作为ー个具体的例子,例如某个渲染子进程140想打开文件另存为对话框,把某些数据存为文件,而由于渲染子进程140受到权限的限制,不能在这个目录打开文件(不受限的主进程110是可以打开这个文件的),则通过Hook另存为对话框函数,记录下用户选择的文件路径,然后在打开文件的函数中检查这个路径,检查到之后使用进程间句柄传递技木,通过主进程110打开该进程句柄,然后传递到渲染子进程140中,从而实现该逻辑的正常工作。如上所述的方式解决了与浏览器100逻辑结合紧密的沙箱兼容性问题,当然,还有其他很多相关的处理。通过对浏览器100的机制和逻辑进行特殊处理,使得程序运行的效率以及用户体验得到提升,且钩子Hook函数一直处于工作状态,由此减少了判断错误的风险,能更好的提高安全性。本发明的进ー步实施例提出了一种客户端,包括Windows操作系统和根据上述第一方面给实施例所述的浏览器100。在本发明的一个实施例中。结合图2,Windows操作系统为主进程110、高权代理子进程120、浏览器应用扩展子进程130和渲染子进程140中的每ー个建立对应的沙箱,且沙箱具有不同的权限级别,如图2所示,不同类型的进程被设置在具有不同权限级别的沙箱中。具体而言Windows操作系统通过安全描述符ACL安全检查机制根据主进程110、高权代理子进程120、浏览器应用扩展子进程130和渲染子进程140所对应的Token对主进程110、高权代理子进程120、浏览器应用扩展子进程130和渲染子进程140进行权限控制。具体而言,Windows操作系统通过安全描述符ACL安全检查机制根据主进程110、高权代理子进程120、 浏览器应用扩展子进程130和渲染子进程140所对应的Token,对主进程110、高权代理子 进程120、浏览器应用扩展子进程130和渲染子进程140进行权限控制。在windows操作系统中,安全描述符ACL安全检查机制是以进程为边界的,一个进程有ー个Token,Token存储了相应的进程所具有的权限,当进程进行一些系统操作,比如文件操作,注册表操作等,则会检查进程的Token和目标对象(文件或注册表等具有安全属性的对象)所对应的权限是否具备。而这种方式的实现如下Windows操作系统通过CreateRestrictedToken API函数获得具有限制权限的Token,并通过CreateProcessAsUser函数根据该具有限制权限的Token建立相应的浏览器应用扩展子进程130和渲染子进程140。也就是说,使用CreateRestrictedToken API来得到一个削减权限的Token,然后再使用CreateProcessAsUser以该Token创建出一个进程。需要说明的是,通过该方式应尽可能多的去除Token中所具有的权限,只留下基本的权限,由此创建出来的进程将不具备Windows操作系统的资源,或者绝大部分用户资源的权限,从而进一步提升了系统的安全性。由于每种进程都有自己的角色以及需要完成的功能,我们根据进程的角色分配不同权限的Token,从而实现不同角色的进程拥有不同的权限。具体而言,每种进程分配的权限如下I、主进程110 :此进程是浏览器100的主进程,由用户点击启动,具有一般的访问权限,可以访问绝大部分本用户的资源。2、高权代理子进程120 :分配用户可获得的最高权限,由主进程110启动,并需要用户同意之后启动。该进程拥有除了ー些与系统操作相关的权限外的权限,权限相对较高。3、浏览器应用扩展子进程130 :此进程由主进程110启动,运行ー些插件以及JS代码,由于这个进程相对危险性较小,因此在Token上做的限制较少,并加入一个限制Job当中,同时设置有相关的Hook。4、渲染子进程此进程由主进程110启动,使用Webkit和/或IE内核显示网页,这个进程是需要加强防护的,即将ー个削减了大部分用户权限的Token赋予该进程,只留基本可用的以保证程序的正常运行,而后将这个进程放入一个限制Job中,限制的权限为进程启动等,同时设置有相关的Hook,以提高兼容性以及进行部分限制,从而达到提升操作系统安全性的目的。
进ー步而言,上述具有限制权限的Token不但包括具有限制的ACL,还可具有限制特权。即通过使用CreateRestrictedToken API来限制Token中有关ACL的部分,实际上CreateRestrictedToken API还能限制Token中的特权,例如限制了进程的调试特权,加载驱动特权等,这些特权都是一些比较高的特权,可以操作相当多的系统资源,如果被病毒木马取得,将是十分危险的。因此,通过对特权的限制,能够进ー步地提高系统的安全性能。对于Windows提供的上述几种机制来说,都以进程为边界,因此多进程浏览器架构应用于沙箱有绝佳的好处。这是由于本发明实施例的每ー类进程只负责ー个基本的功能,具有很清晰的角色,当将相应的沙箱应用于该进程时,可以根据该进程的角色进行不同的权限控制,从而让进程可以更好,更有效率的运行。根据本发明实施例的客户端,基于已有的多进程浏览器架构,并结合沙箱的安全隔离技木,很大强度的增强了用户使用浏览器上网的安全性。并且将多进程与沙箱与浏览 器本身的内部机制和逻辑结合的十分紧密,因此能极大提高程序的运行效率,用户体验以及用户效率。本发明的实施例具有如下优点第一,本发明的实施例可以在用户对目标对象执行操作之前,自动判断目标对象的执行是否需要导入沙箱,由此帮助用户决定哪些有风险的程序需要在沙箱内运行。第二,本发明实施例的浏览器所使用的多进程浏览器架构,保证系统安全性和健壮性的同时加强了架构在沙箱中的应用。第三,浏览器的沙箱是一直开启,从而減少了判断错误的风险,能更好的提高安全性。并且放入沙箱的进程是有角色权限分级控制的,即每种类型的进程放入具有不同权限的沙箱中,由此提升了系统的执行效率。流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPR0M或闪速存储器),光纤装置,以及便携式光盘只读存储器(⑶ROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另ー实施方式中一祥,可用本领域公知的下列技术中的任一项或他们的组合来实现具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。本技术领域的普通技术人员可以理解实现上述实施例方法携帯的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于ー种计算机可读存储介 质中,该程序在执行时,包括方法实施例的步骤之一或其组合。此外,在本发明各个实施例中的各功能単元可以集成在ー个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。在本说明书的描述中,參考术语“ー个实施例”、“一些实施例”、“示例”、“具体示例”、或“ー些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少ー个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
权利要求
1.一种浏览器,其特征在于,包括 主进程和多个子进程,其中,所述多个子进程由所述主进程创建,且所述多个子进程具有不同的权限。
2.如权利要求I所述的浏览器,其特征在于,所述主进程的权限不高于资源管理器的默认权限。
3.如权利要求I所述的浏览器,其特征在于,所述主进程和所述多个子进程的权限由控制策略进行配置。
4.如权利要求I所述的浏览器,其特征在于,所述多个子进程包括高权代理子进程、浏览器应用扩展子进程和至少一个渲染子进程,其中,所述高权代理子进程、浏览器应用扩展子进程、至少一个渲染子进程和所述主进程之间具有不同的权限。
5.如权利要求I所述的浏览器,其特征在于,所述主进程还用于对所述多个子进程中的一个子进程进行提权操作。
6.如权利要求5所述的浏览器,其特征在于,所述主进程接收所述多个子进程中的一个子进程的提权请求,由所述主进程根据所述提权请求代理所述子进程进行操作,或者,由所述主进程临时调整所述子进程的权限,并在所述子进程执行相应操作之后恢复所述子进程的权限。
7.如权利要求6所述的浏览器,其特征在于,所述子进程在所述主进程提权之后进行读写操作、启动孙进程操作或访问SSL证书操作。
8.如权利要求1-7任一项所述的浏览器,其特征在于,所述子进程或所述孙进程具有限制的令牌Token/Job,所述Token/Job用于对所述子进程或所述孙进程的权限进行限制。
9.如权利要求1-8任一项所述的浏览器,其特征在于,所述子进程或所述孙进程之中还包括钩子Hook以拦截Windows API提供提权或虚拟化的功能,其中, 所述Hook提权功能用于在子进程创建孙进程时获得所述子进程或所述孙进程的上下文,并根据所述上下文向所述主进程发送提权请求或所述子进程访问SSL证书时将所述子进程的Token切换到高权限的Token ; 所述Hook虚拟化功能用于在子进程创建和写入文件时,将所述文件虚拟化到安全的目录。
10.如权利要求1-9任一项所述的浏览器,其特征在于,所述至少一个渲染子进程包括Webkit渲染内核和/或IE渲染内核,所述Webkit渲染内核和/或IE渲染内核中至少一个具有所述Token/Job以及所述Hook提权函数。
11.如权利要求4所述的浏览器,其特征在于,当所述浏览器应用扩展子进程和至少一个渲染子进程处理对应权限之外的操作时,所述浏览器应用扩展子进程和至少一个渲染子进程向所述主进程发送提权请求,所述主进程根据所述浏览器应用扩展子进程和至少一个渲染子进程所对应的权限判断是否允许所述操作。
12.如权利要求4所述的浏览器,其特征在于,当所述主进程要安装程序或插件时,所述主进程向所述高权代理子进程发送通知,所述高权代理子进程向用户提示是否同意安装所述程序或插件。
13.如权利要求4所述的浏览器,其特征在于,所述浏览器应用扩展子进程和至少一个渲染子进程具有至少一个Hook虚拟化函数以实现文件虚拟化。
14.如权利要求13所述的浏览器,其特征在于,当所述至少一个渲染子进程对网页进行文件创建或写入操作时,所述Hook虚拟化函数将所述网页存储至可写的虚拟化目录,并通知所述主进程将所述网页文件拷贝至用户指定的目录。
15.如权利要求4所述的浏览器,其特征在于,所述至少一个渲染子进程具有Hook进程启动函数,当所述至少一个渲染子进程启动孙进程时,所述Hook进程启动函数检查子进程文件,如果判断所述孙进程属于预设的白名单,为所述孙进程设置于所述主进程相同的Token 和 Job。
16.如权利要求4所述的浏览器,其特征在于,当所述至少一个渲染子进程启动COM组件时,如果判断所述COM组件属于预设的白名单,则所述至少一个渲染子进程通知所述主进程创建所述COM组件,在所述主进程创建所述COM组件之后,将所述COM组件对应的COM接口发送至所述至少一个渲染子进程。
17.如权利要求4所述的浏览器,其特征在于,当所述至少一个渲染子进程打开受限对象的句柄时,所述至少一个渲染子进程通知所述主进程,在所述主进程打开所述句柄之后将打开的句柄复制至所述至少一个渲染子进程。
18.—种客户端,其特征在于,包括 Windows操作系统;以及 如权利要求1-17任一项所述的浏览器。
19.如权利要求18所述的客户端,其特征在于,所述Windows操作系统为所述主进程、高权代理子进程、浏览器应用扩展子进程和至少一个渲染子进程中的每一个建立对应的沙箱,且所述沙箱具有不同的权限级别。
20.如权利要求19所述的客户端,其特征在于,所述Windows操作系统通过安全描述符ACL安全检查机制根据所述主进程、高权代理子进程、浏览器应用扩展子进程和至少一个渲染子进程所对应的Token,对所述主进程、高权代理子进程、浏览器应用扩展子进程和至少一个渲染子进程进行权限控制。
全文摘要
本发明提出了一种浏览器及客户端,所述浏览器包括主进程和多个子进程,其中,所述多个子进程由所述主进程创建,且所述多个子进程具有不同的权限。根据本发明的浏览器基于多进程浏览器架构,通过对不同功能进程的权限控制,增强了用户使用浏览器上网的安全性。且进程间通过主进程的调度和控制,与浏览器本身的内部机制和逻辑结合紧密,提高了程序的运行效率,用户体验以及用户效率。
文档编号H04L29/08GK102663318SQ20121007848
公开日2012年9月12日 申请日期2012年3月22日 优先权日2012年3月22日
发明者宾彬, 熊新星 申请人:百度在线网络技术(北京)有限公司