法律状态公告日
法律状态信息
法律状态
2015-08-26
授权
授权
2013-03-20
实质审查的生效 IPC(主分类):G06F21/53 申请日:20121012
实质审查的生效
2013-02-13
公开
公开
技术领域
本发明属于软件安全技术领域,涉及一种轻量级JavaScript沙箱的实现方 法。
背景技术
JavaScript语言是一种广泛应用于互联网应用程序的脚本语言,JavaScript 语言具有很好的表达能力和灵活性,使用JavaScript语言可以提高软件系统的 灵活性和表达性,提高软件系统的可读性和可重用性。
而函数(function)是JavaScript语言的基本结构,JavaScript程序系由一组函 数组成,只有确保目标JavaScript函数安全和可靠的执行,JavaScript程序才能 够被安全和可靠的执行,不产生危险和恶意的程序行为。JavaScript语言支持运 行时求解(runtime evaluation)语法特性,很多软件系统(例如社交网络)利用运行 时求解支持用户提供JavaScript代码,由于缺乏有效的安全检查机制,直接运 行用户提供的JavaScript代码可能引入危险和恶意的程序行为,影响整个软件 系统的可靠性和安全性。
目前解决JavaScript程序安全性和可靠性问题的一种方法是建立沙箱,让 可疑的JavaScript代码在沙箱中运行,通过沙箱防止恶意的JavaScript程序代码 的执行。然而,现有的JavaScript程序实现一般较为复杂,一般需要扩展浏览 器或者修改Web应用程序,甚至需要修改JavaScript的原有语法,程序员掌握 和操作起来比较困难。
故,实有必要进行研究,提供一种简单有效,便于程序员的掌握和操作的 轻量级JavaScript沙箱的实现方法。
发明内容
为解决上述问题,本发明的目的在于提供一种简单有效,便于程序员的掌 握和操作的轻量级JavaScript沙箱的实现方法,确保JavaScript程序代码在沙箱 内部安全执行,不产生危险的程序行为。
为实现上述目的,本发明的技术方案为:
一种轻量级JavaScript沙箱的实现方法,包括如下步骤:
S10:定义沙箱内部的访问控制;
S11:根据所定义的访问控制自动生成沙箱监控代码;
S12:根据所定义的访问控制自动生成禁止访问函数的监控代码;
S13:实时检测沙箱内部恶意代码,阻止危险的函数调用。
进一步地,所述步骤S10具体包括:
S101:定义一个函数作为沙箱范围,将可疑的JavaScript代码封装在这个 特定的函数内部,针对这个沙箱定义禁止访问的函数集合;
S102:对一组访问控制定义一个访问控制对象数组,每一个数组元素对应 一个访问控制。
进一步地,步骤S102中,每一个访问控制包括有沙箱名称和禁止访问函 数数组这两个部分,沙箱名称为沙箱入口函数名称,禁止访问函数数组的每一 个元素是对应的沙箱内部禁止访问的一个函数名称。
进一步地,所述步骤S11具体包括:
S110:逐个访问访问控制对象数组,取出其中的访问控制对象;
S111:根据访问控制对象的沙箱名称,生成入口函数的监控代码的字符串;
S112:根据步骤S111中生成的字符串,使用jQuery AOP和JavaScript函 数生成沙箱的监控代码。
进一步地,所述步骤S12具体包括:
S120:逐个访问控制对象数组元素,取出其中的访问控制对象;
S121:根据访问控制对象的禁止访问函数数组生成禁止访问函数的监控代 码的字符串;
S121:根据步骤S121生成的字符串,使用jQuery AOP和JavaScript函数 生成禁止访问函数的监控代码。
进一步地,所述步骤S13具体包括:。
S130:当沙箱入口函数被执行时,系统进入口函数对应的沙箱;
S131:设置进入沙箱为系统的当前沙箱,系统的沙箱数量加1;
S132:执行沙箱内部的程序代码;
S133:如果沙箱内部代码执行完成,则返回上一个沙箱,系统的沙箱数量 减1,系统返回初始状态;
S134:如果某个禁止访问函数被执行,则判断该禁止访问函数是否属于当 前的访问控制,如果属于当前的访问控制,则执行步骤S135;否则,返回步骤 S132;
S135:发生危险程序行为时,阻止执行
相较于现有技术,本发明轻量级JavaScript沙箱的实现方法简单有效,便 于程序员的掌握和操作的轻量级JavaScript沙箱的实现方法,确保JavaScript程 序代码在沙箱内部安全执行,不产生危险的程序行为。
附图说明
图1是本发明的方法流程图示。
图2是本发明生成沙箱的监控代码的流程图示。
图3是本发明生成禁止访问函数的监控代码的流程图示。
图4是本发明运行时检测沙箱内部恶意代码的流程图示。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用于限定本发明。
请参照图1所示,本发明轻量级JavaScript沙箱的实现方法包括如下步骤:
S10:定义沙箱内部的访问控制,具体包括如下步骤:
S101:定义一个函数作为沙箱范围,将可疑的JavaScript代码封装在这个 特定的函数内部,针对这个沙箱定义禁止访问的函数集合,这些JavaScript函 数的执行可能引起危险的程序行为;禁止访问的函数集合如下表所示:
S102:对一组访问控制定义一个访问控制对象数组,每一个数组元素对应 一个访问控制。其中,每一个访问控制包括有沙箱名称和禁止访问函数数组这 两个部分,沙箱名称为沙箱入口函数名称,禁止访问函数数组的每一个元素是 对应的沙箱内部禁止访问的一个函数名称。
S11:根据所定义的访问控制自动生成沙箱监控代码,请参照图2所示,具 体包括如下步骤:
S110:逐个访问访问控制对象数组,取出其中的访问控制对象;
S111:根据访问控制对象的入口函数名称定义沙箱名称,生成入口函数的 监控代码的字符串;
S112:根据步骤S111中生成的字符串,使用jQuery AOP(JQuery的面向 方面编程扩展)和JavaScript函数eval()生成沙箱的监控代码。
S12:根据所定义的访问控制自动生成禁止访问函数的监控代码,请参照图 3所示,具体包括如下步骤:
S120:逐个访问控制对象数组元素,取出其中的访问控制对象;
S121:根据访问控制对象的禁止访问函数数组生成禁止访问函数的监控代 码的字符串;
S121:根据步骤S121生成的字符串,使用jQuery AOP和JavaScript函数 eval()生成禁止访问函数的监控代码。
S13:实时检测沙箱内部恶意代码,阻止危险的函数调用,请参照图4所示, 检测沙箱内部恶意代码的步骤如下:
S130:当沙箱入口函数被执行时,系统进入口函数对应的沙箱;
S131:设置进入沙箱为系统的当前沙箱,系统的沙箱数量加1;
S132:执行沙箱内部的程序代码;
S133:如果沙箱内部代码执行完成,则返回上一个沙箱,系统的沙箱数量 减1,系统返回初始状态;
S134:如果某个禁止访问函数被执行,则判断该禁止访问函数是否属于当 前的访问控制,如果属于当前的访问控制,则执行步骤S135;否则,返回步骤 S132。
S135:发生危险程序行为时,阻止执行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的保护范围之内。
机译: 具有轻量级容器的沙箱运行时Android应用的方法和装置
机译: 用轻量级容器沙箱运行时android应用程序的方法和装置
机译: 一种具有轻量级和节能方法的低成本系统,用于在移动自组网(manet)中安全路由以实现个人局域网(pan)。