首页> 中国专利> 一种轻量级JavaScript沙箱的实现方法

一种轻量级JavaScript沙箱的实现方法

摘要

本发明公开了一种轻量级JavaScript沙箱的实现方法,包括如下步骤:S10:定义沙箱内部的访问控制;S11:根据所定义的访问控制自动生成沙箱监控代码;S12:根据所定义的访问控制自动生成禁止访问函数的监控代码;S13:实时检测沙箱内部恶意代码,阻止危险的函数调用。本发明轻量级JavaScript沙箱的实现方法简单有效,便于程序员的掌握和操作的轻量级JavaScript沙箱的实现方法,确保JavaScript程序代码在沙箱内部安全执行,不产生危险的程序行为。

著录项

  • 公开/公告号CN102930203A

    专利类型发明专利

  • 公开/公告日2013-02-13

    原文格式PDF

  • 申请/专利权人 浙江大学城市学院;

    申请/专利号CN201210386639.9

  • 发明设计人 吴明晖;吕嘉;颜晖;金苍宏;薛莲;

    申请日2012-10-12

  • 分类号

  • 代理机构杭州宇信知识产权代理事务所(普通合伙);

  • 代理人张宇娟

  • 地址 310015 浙江省杭州市拱墅区舟山东路30号

  • 入库时间 2024-02-19 17:47:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 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:发生危险程序行为时,阻止执行。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号