一种JavaScript代码保护方法及装置的制造方法

文档序号:9453336阅读:188来源:国知局
一种JavaScript代码保护方法及装置的制造方法
【技术领域】
[0001] 本发明涉及网络技术领域,尤其涉及一种JavaScript代码保护方法及装置。
【背景技术】
[0002] JavaScript是一种直接在目标机器上运行的脚本语言,它具有代码的可见性, 即用JavaScript语言编写的代码,必须被明文下载到客户端,这使得以明文形式显示的 JavaScript代码很容易被他人盗用,不能得到保护,代码的安全性很差,人人都可以直接查 看运行的代码片段并进行修改、复制及翻版传播。而目前随着HTML5的崛起,JavaScript 语言应用范围越来越广,包括著名的手机游戏开源引擎C〇c〇s2d-JS的版本、服务端开发技 术Node,js以及传统的Web开发等等。在上述情况下,都不可避免地要把运行代码暴露给 第三方厂商。
[0003] 因此,对JavaScript代码保护技术的需求也日趋迫切。现有技术中存在两 种JavaScript代码混淆的方法,第一种方法是利用JavaScript中的escapeO函数对 JavaScript代码进行加密,同时可以使用unescape()函数对加密后的JavaScript代码 进行解密。第二种方法是首先将JavaScript代码中的换行符去除,其次将去除换行符的 JavaScript代码中的变量名称用随机名称进行替换。
[0004] 上述第一种方法中,由于JavaScript中的escape()函数和unescape()函数众 所周知,所以利用第一种方法对JavaScript代码进行混淆不能使其安全性得到保障。运 用第二种方法对JavaScript代码进行混淆后,获取的JavaScript代码中除了被替换的变 量名称仍存在本领域技术人员可读取的有意义的字符,所以该方法仍然不能有效地保护 JavaScript代码。

【发明内容】

[0005] 为此,本发明提供一种JavaScript代码保护方法及装置,以力图解决或者至少缓 解上面存在的至少一个问题。
[0006] 根据本发明的一个方面,提供了一种JavaScript代码保护方法,该方法包括步 骤:获取源代码中的变量名称,根据映射规则用预置字符串代替变量名称,获取替换后源代 码;对替换后源代码中的代码片段进行加密,获取加密后源代码;以及判断加密后的代码 片段是否被篡改,若没有则将加密后源代码作为受保护的源代码。
[0007] 可选地,在根据本发明的JavaScript代码保护方法中,获取替换后源代码的步骤 还包括:获取源代码中的函数名称,根据映射规则用预置字符串代替函数名称,获取替换后 源代码。
[0008] 可选地,在根据本发明的JavaScript代码保护方法中,预置字符串是由数字0、数 字1、小写字母〇、小写字母1、大写字母〇组成。
[0009] 可选地,在根据本发明的JavaScript代码保护方法中,对替换后源代码中的代码 片段进行加密的步骤包括:定义加密算法的偏移量;将代码片段中的所有字符值偏移所述 偏移量;以及采用预定函数替换该加密代码片段。
[0010] 可选地,在根据本发明的JavaScript代码保护方法中,还包括步骤:重复上述加 密步骤,对代码片段进行多次迭代加密。
[0011] 可选地,在根据本发明的JavaScript代码保护方法中,判断加密后的代码片段是 否被篡改的步骤包括:判断加密后的代码片段中字符串长度是否等于预置长度,若等于则 没有被篡改。
[0012] 可选地,在根据本发明的JavaScript代码保护方法中,判断加密后的代码片段是 否被篡改的步骤还包括:判断加密后的代码片段中指定位的字符是否等于预置字符,若等 于则没有被篡改。
[0013] 根据本发明的另一方面,提供了一种JavaScript代码保护装置,该装置包括:获 取模块,适于获取JavaScript代码作为源代码,以及获取源代码中的变量名称;替换模块, 适于根据映射规则用预置字符串代替变量名称,得到替换后源代码;加密模块,适于对替换 后源代码中的代码片段进行加密,获取加密后源代码;以及校验模块,适于判断加密后的代 码片段是否被篡改,若没有则将加密后源代码作为受保护的源代码。
[0014] 可选地,在根据本发明的JavaScript代码保护装置中,获取模块还适于获取源代 码中的函数名称;以及替换模块还适于根据映射规则用预置字符串代替函数名称,获取替 换后源代码。
[0015] 可选地,在根据本发明的JavaScript代码保护装置中,预置字符串是由数字0、数 字1、小写字母〇、小写字母1、大写字母〇组成。
[0016] 可选地,在根据本发明的JavaScript代码保护装置中,加密模块还包括:存储子 模块,适于定义加密算法的偏移量;加密子模块,适于将代码片段中的所有字符值偏移所述 偏移量;以及标识子模块,适于采用预定函数替换加密代码片段。
[0017] 可选地,在根据本发明的JavaScript代码保护装置中,加密模块还包括:迭代子 模块,适于对代码片段进行多次迭代加密。
[0018] 可选地,在根据本发明的JavaScript代码保护装置中,校验模块适于判断加密后 的代码片段中字符串长度是否等于预置长度,若等于则没有被篡改。
[0019] 可选地,在根据本发明的JavaScript代码保护装置中,校验模块还适于判断加密 后的代码片段中指定位的字符是否等于预置字符,若等于则没有被篡改。
[0020] 根据本发明的JavaScript代码保护方案,按照一定的映射规则用预置字符串代 替源代码中的变量名称和函数名称,利用代码混淆技术对JavaScript代码进行一层保护; 而后挑选其中的代码片段,采用对字符值施加固定的偏移量的加密算法,起到掩藏函数逻 辑的作用,并且可以多次迭代该加密算法;更进一步地,通过在加密后的代码片段中插入校 验位来判断JavaScript代码是否被恶意篡改。所以,与现有技术相比,本方案达到了有效 保护JavaScript代码的目的,同时防止JavaScript代码被盗用。
【附图说明】
[0021] 为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方 面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面 旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述 以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的 部件或元素。
[0022] 图1示出了根据本发明一个实施例的计算设备100的构造图;
[0023] 图2示出了根据本发明一个实施例的JavaScript代码保护方法200的流程图;以 及
[0024] 图3示出了根据本发明一个实施例的JavaScript代码保护装置300的示意图。
【具体实施方式】
[0025] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开 的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例 所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围 完整的传达给本领域的技术人员。
[0026] 图1是布置为实现根据本发明的JavaScript代码保护方案的示例计算设备100 的框图。在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个 处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
[0027] 取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器 (yP)、微控制器(yc)、数字信息处理器(dsp)或者它们的任何组合。处理器104可以包括 诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器 核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元 (FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可 以与处理器104-起使用,或者在一些实现中,存储器控制器118可
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1