基于自动化编译JavaScript代码的智能混淆方法技术

技术编号:17596482 阅读:45 留言:0更新日期:2018-03-31 09:50
本发明专利技术公开了一种基于自动化编译JavaScript代码的智能混淆方法,包括以下步骤:常规的源码开发;代码开发完成,并引用代码规范校验工具进行代码校验,例如JSHint等代码校验工具进行校验;通过代码校验,配置代码重构的规则;根据配置好的加密方式,引用对应的工具库,执行自动化构建,对代码文件进行重构编写;输出加密的安全代码。本发明专利技术用少量字符就能够完成任意字符串的编码,采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用,加强了前端代码的安全性的同时不会影响代码的正常执行。

An intelligent confusing method based on automated compilation of JavaScript code

The invention discloses a method for confusion intelligent automation based on JavaScript code is compiled, which comprises the following steps: the development of conventional source code development; complete, and code verification code specification calibration tools, such as JSHint code checksum verification tool; through code verification, configuration code reconstruction according to the configuration rules; good encryption methods reference, the corresponding tool library, implementation of automation construction, reconstruct the compilation of the code file encryption security code output. A small amount can be completed in any character string encoding method is adopted to protect the logic of the code is not understood by others, JavaScript code confusion, to effectively protect the purpose of the JavaScript code, and JavaScript code to prevent theft, strengthen the front-end code security and will not affect the normal execution of code.

【技术实现步骤摘要】
基于自动化编译JavaScript代码的智能混淆方法
本专利技术涉及计算机
,尤其涉及一种基于自动化编译JavaScript代码的智能混淆方法。
技术介绍
现代各种互联网的应用程序已经成为生活中不可缺少的部分,如各种网站、手机应用等等。互联网的应用程序给人们生活带来便利的同时,在背后也是隐藏着的是用户数据信息的安全、个人隐私等等问题。作为程序的开发者,基本的职业操守是需要对用户的信息安全做好把关,以防一些别有用心的人通过非法的技术手段去获取用户数据或者破坏程序。因此,对公众开放的程序采取保护措施是一个很有必要的研究。通过一些技术手段,如代码混淆加密,代码转译等等方式,可以提高程序的破译的难度,增强程序的健壮性。近几年来html5的广泛应用,JavaScript的标准也得到各大浏览器的支持,但是针对JavaScript的代码安全研究并不是很多。目前主流的前端JavaScript安全方式是通过代码混淆的方式实现,但是由于前端JavaScript代码混淆的盖面没有得到很好的推广以及应用,导致目前仍然有很多网站、混合式开发的手机应用的前端JavaScript代码都是源代码状态,直接将代码暴露出来,很容易给别有用心的人去编译、破解等。而目前现有的代码混淆的研究,主要针对的是服务器端场景,也就是常说的后端,相对而言在客户端的JavaScript代码混淆研究比较少。
技术实现思路
有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是提供一种基于自动化编译JavaScript代码的智能混淆方法,可以达到代码只能被计算机执行而不能被正常阅读,可以加强了前端代码的安全性的同时不会影响代码的正常执行。本技术在实际应用中可以结合工具库使用,方便开发人员应用在前端开发场景中。为实现上述目的,本专利技术提供了一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于,包括以下步骤:步骤一:常规的源码开发;步骤二:代码开发完成,并引用代码规范校验工具进行代码校验,例如JSHint等代码校验工具进行校验;步骤三:通过代码校验,配置代码重构的规则;步骤四:根据配置好的加密方式,引用对应的工具库,执行自动化构建,对代码文件进行重构编写;步骤五:输出加密的安全代码。上述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤二引用代码规范校验工具进行代码校验具体为:用不限于JSHint的代码校验工具进行校验。上述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤四引用对应的工具库包括但不限于uglifyjs.js、rewritejs.js。上述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤四对代码文件进行重构编写为:利用少量字符构造精简的匿名函数对字符串进行编码。上述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述少量字符包括但不限于“!”“+”“(”“)”“[”“]”。本专利技术的有益效果是:本专利技术运用了JavaScript语言中可以利用少量字符构造精简的匿名函数方法对于字符串进行编码的方式,其中少量字符包括“!”“+”“(”“)”“[”“]”,只用这些字符就能够完成任意字符串的编码,采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用,加强了前端代码的安全性的同时不会影响代码的正常执行。以下将结合附图对本专利技术的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本专利技术的目的、特征和效果。附图说明图1是本专利技术的流程图。具体实施方式如图1所示,一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于,包括以下步骤:步骤一:常规的源码开发;步骤二:代码开发完成,并引用代码规范校验工具进行代码校验,例如JSHint等代码校验工具进行校验。因为代码编写重构对源码质量有依赖,源码质量越高,重构出错的概率就越低,为了保证输出,所以代码校验这一个步骤需要增加。步骤三:通过代码校验,配置代码重构的规则。因为我们最终的目标是将源码加密混淆,尽最大的可能将逻辑思维暴露出去,所以在实际应用中,出了应用本专利技术中的代码重构之外,也会配合组合主流的混淆加密方法,如流程混淆、命名混淆、添加脏代码。步骤四:根据配置好的加密方式,引用对应的工具库,如uglifyjs.js、rewritejs.js,本专利技术用rewritejs.js执行自动化构建,对代码文件进行重构。本专利技术中JavaScript编写方法是借鉴了代码混淆技术的思维,是采用了代码重构的方式进行加密的方式。代码重构编写技术主要是将JavaScript代码用一些难以读懂而且而且毫无规律的字符代替,但是不会影响到代码的执行。核心原理是运用了JavaScript语言中可以利用少量字符构造精简的匿名函数方法对于字符串进行编码的方式,其中少量字符包括“!”“+”“(”“)”“[”“]”,只用这些字符就能够完成任意字符串的编码。以下通过举例如果通过特殊编写方式将JavaScript中的数字“0”构建出来作为例子,阐述本专利技术的核心原理以及技巧:步骤一:用浏览器执行一下函数:alert([function(){alert(1)}()]),可以看到浏览器窗口会先弹出一个内容是1的窗口,然后接着会弹出一个空白的窗口。原因是函数先执行了一次alert(1)(表象是出现内容为1的弹窗),接着就执行了alert(函数)(表象是出现空白的弹窗)。由此可以看出[function(){alert(1)}()]这个匿名函数是返回了自身函数,而通过alert的表现所执行出来的是一个空白,不能表示出来的字符(可以类似于void),而不是undefined值(如果没有返回,则alert弹出的窗口会是undefined的字符串)。步骤二:修改一下执行的函数为alert([]),用浏览器执行,我们可以发现出现表象是出现一个空白的弹窗,由此证明“[]”也是一个匿名函数,而且是是返回了一个不能表示的字符。通过这样的演示可以看出“[]”可以返回是一个匿名函数的“空壳”。步骤三:修改一下函数alert(+[]),用浏览器执行,我们可以发现得到的现象是弹出一个内容是0的弹窗,这样可以证明+[]得出的结果是数字0(如果用typeof(+[])我们可以得出结果是’number’)。原因是,通过运算符“+”,可以将将无法显示出来的空(void)强制转换成数字类型0。基于JavaScript的这类型的语法技巧,我们就将“数字0”用“+[]”表达出来了。如此类推,我们运用这些技巧,构建出更多的数字。运用这列的技巧以及JavaScript的代码特性,通过运用运算符“+”,逻辑运算符“!”的计算特性,可以构建出更多基础类型。举例一部分转码的对比表,如下表格显示:基础类型转码false![]true!![]undefined[][[]]NaN+[![]]Infinity+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])Array[]Number(+[])Stri本文档来自技高网...
基于自动化编译JavaScript代码的智能混淆方法

【技术保护点】
一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于,包括以下步骤:步骤一:常规的源码开发;步骤二:代码开发完成,并引用代码规范校验工具进行代码校验,例如JSHint等代码校验工具进行校验;步骤三:通过代码校验,配置代码重构的规则;步骤四:根据配置好的加密方式,引用对应的工具库,执行自动化构建,对代码文件进行重构编写;步骤五:输出加密的安全代码。

【技术特征摘要】
1.一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于,包括以下步骤:步骤一:常规的源码开发;步骤二:代码开发完成,并引用代码规范校验工具进行代码校验,例如JSHint等代码校验工具进行校验;步骤三:通过代码校验,配置代码重构的规则;步骤四:根据配置好的加密方式,引用对应的工具库,执行自动化构建,对代码文件进行重构编写;步骤五:输出加密的安全代码。2.如权利要求1所述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤二引用代码规范校验工具进行代码校验具体为:用不限于JSHint的...

【专利技术属性】
技术研发人员:孔祥明林悦洁
申请(专利权)人:广东广业开元科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1