发明内容
本发明实施例提供了一种Web应用程序的处理方法及装置,用以解决现有技术中由于黑客容易获取Web应用程序的核心内容而存在安全性较低的技术问题。
第一方面,本发明提供了一种Web应用程序的处理方法,包括:
获取Web应用程序的JS代码;
从所述JS代码中筛选出核心函数;
基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
基于预设加密算法对所述第一函数名称进行加密,获得第二函数名称;
将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
可选地,所述方法还包括:在从所述JS代码中筛选出核心函数时:
从所述JS代码中筛选出部分非核心函数。
可选地,所述预设加密算法为TEA分组加密算法,所述基于预设加密算法对所述第一函数名称进行加密,获得第二函数名称包括:
基于预设方法生成随机数;
将所述随机数作为所述TEA分组加密算法的密钥,对所述第一函数名称进行加密,获得所述第二函数名称。
可选地,在所述将所述随机数作为所述TEA分组加密算法的密钥,对所述第一函数名称进行加密,获得所述第二函数名称之后,所述方法还包括:
基于所述TEA分组加密算法和所述密钥,对所述第二函数名称再次加密,获得第三函数名称。
基于同样的发明构思,本发明第二方面提供了一种Web应用程序的处理装置,包括:
获取模块,用于获取Web应用程序的JS代码;
第一筛选模块,用于从所述JS代码中筛选出核心函数;
第一加密模块,用于基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
第二加密模块,用于基于预设加密算法对所述第一函数名称进行加密,获得第二函数名称;
替换模块,用于将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
可选的,所述装置还包括第二筛选模块,用于在从所述JS代码中筛选出核心函数时:
从所述JS代码中筛选出部分非核心函数。
可选的,所述预设加密算法为TEA分组加密算法,所述第二加密模块还用于:
基于预设方法生成随机数;
将所述随机数作为所述TEA分组加密算法的密钥,对所述第一函数名称进行加密,获得所述第二函数名称。
可选的,所述装置还包括第三加密模块,用于:
基于所述TEA分组加密算法和所述密钥,对所述第二函数名称再次加密,获得第三函数名称。
基于同样的发明构思,本发明第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面提供的方法。
基于同样的发明构思,本发明第四方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面提供的方法。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明提供的方法中,获取Web应用程序的JS代码后,从JS代码中筛选出核心函数,并利用预设消息摘要算法对核心函数的原始函数名称进行了加密,由于大部分函数而言,是采用函数名称表达该函数的功能,从而通过函数名则可以知道此函数的实现功能,而本发明通过预设消息摘要算法对核心函数的名称进行了加密,因此加强了对核心函数的保护,从而提高了Web应用程序的安全性,并且,本发明还进一步采用预设加密算法对利用消息摘要算法加密后的第一函数名称进行再次加密,然后将第二函数名称替换JS代码中的所述原始函数名称,从而对Web应用程序中的函数名称进行了一步的保护,增加了函数名称的破解难度,从而有效防止了黑客获取JS代码的核心内容,故而进一步提高了安全性,由于黑客容易获取Web应用程序的核心内容而存在安全性较低的技术问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
本申请实施例通过提供一种Web应用程序的处理方法及装置,用以解决现有技术中由于黑客容易获取Web应用程序的核心内容而存在安全性较低的技术问题。
本申请实施例中的技术方案,总体思路如下:
获取Web应用程序的JS代码;从所述JS代码中筛选出核心函数;基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;基于预设加密算法对所述第一函数名称进行加密,获得第二函数名称;将所述第二函数名称替换所述JS代码中的所述原始函数名称。
上述方法中,通过预设消息摘要算法对JS代码中的核心函数的原始函数名称进行加密,从而通过隐藏函数名称的方法使得获取核心函数的功能更难,提高了Web应用程序的安全性,并且,进一步采用预设加密算法对第一函数名称进行加密,从而通过对JS代码中的核心函数名称的加密实现了对Web应用程序中的核心内容的进一步的保护,增加了函数名称的破解难度,从而有效防止了黑客获取JS代码的核心内容,故而进一步提高了安全性,由于黑客容易获取Web应用程序的核心内容而存在安全性较低的技术问题。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供一种Web应用程序的处理方法,如图1所示,该方法包括:
步骤S101:获取Web应用程序的JS代码。
具体来说,JS代码即JavaScript代码,为直译式脚本语言,也是一种动态类型、弱类型、基于原型的语言,内置支持类型。通常被用来编写Web应用程序。
步骤S102:从所述JS代码中筛选出核心函数。
具体来说,JS代码中包含Web应用程序的核心功能、安全性的功能的实现代码,这些代码是采用函数来实现,即核心函数。
在一种可选实施方式中,为了对核心函数起到更好的隐蔽作用,本实施也会也筛选出部分非核心函数,非核心函数的数量可以根据需要进行选择,例如核心函数的数量为50个,非核心函数的数量为5个,核心函数的数量为30个,非核心函数的数量为3等等,从而使得筛选出的函数中包含所有的核心函数也包含部分非核心函数。在具体的实施过程中,由于核心函数和非核心函数的数量为多个,则筛选完成后将会得到一个函数名称列表,其中,核心函数包括:
密码加密的函数:Function encryptPassword;
计算视频流地址请求的关键函数:Function calcliveKey;
计算消费的函数:Function calcSpending;
充值的函数:Function recharge;
非核心函数包括:
记录用户键盘操作的函数:Function dotKeyboard;
记录用户鼠标操作的函数:Function dotMouse。
通过上述操作,可以得到一个函数列表:
encryptPassword、calcliveKey、calcSpending、recharge、dotKeyboard、dotMouse。
步骤S103:基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称。
具体来说,预设消息摘要算法包括MD2(Message Digest Algorithm 2)、MD3、MD4、MD5。下面以MD5算法为例,具体介绍对核心函数的原始函数名称进行加密的过程,
对于密码加密的函数encryptPassword来说,可以利用Md5.Create来计算加密的结果,
“30e091d7dc166cf9”=Md5.Create(“encryptPassword”);
其中,Md5.Create则是计算Md5的接口函数,参数“encryptPassword”则是具体需要计算的md5的内容,即原始函数名称,返回值“30e091d7dc166cf9”则是得到的计算的md5的结果,也即第一函数名称。
同理,对其他函数的函数名称也采用MD5算法进行加密,即对各个原始函数名称计算其md5值:
79bd86e6ddefb0c0=Md5.Create(“calcliveKey”),对于计算视频流地址请求的关键函数的函数名称加密:
bc82d67f9c398d77=Md5.Create(“calcSpending”),对计算消费的函数的函数名称加密;
5e1d0bda83b02a3a=Md5.Create(“recharge”),对充值的函数的加密;
dd0d3a485dc0a081=Md5.Create(“dotKeyboard”);对记录用户键盘操作的函数的函数名称加密;
ae390a90869bdbc1=Md5.Create(“dotMouse”);对记录用户鼠标操作的函数的函数名称加密。
通过上述加密过程,可以得出加密的结果,即计算的Md5结果,JS代码中各个函数的原始的函数名称是可以表达函数的具体实现功能的,而通过Md5计算后,可以将原始函数名称转化成一串字符串,则对于不知道具体加密算法和逻辑的黑客来说,其通过字符串无法得知其真正的含义,从而可以起到较好的隐蔽函数具体意义,同时也可以保障所有的函数名称不会重复,因而相互之间不冲突。
步骤S104:基于预设加密算法对所述第一函数名称进行加密,获得第二函数名称。
具体来说,通过步骤S103中的消息摘要算法对函数名称进行加密后,为了进一步加强对函数名称的保护,本实施步骤则对加密后的第一函数名称的再次进行加密。
在一种可选实施方式中,采用的预设加密算法为TEA分组加密算法,则基于预设加密算法对所述第一函数名称进行加密,获得第二函数名称包括:
基于预设方法生成随机数;
将所述随机数作为所述TEA分组加密算法的密钥,对所述第一函数名称进行加密,获得所述第二函数名称。
具体来说,采用TEA加密算法对第一函数名称再次进行加密,从而达到的混淆程度更高,同时本发明实施例通过预设方法生成随机数,从而每次对函数名称使用的加密密钥不同,对不同的函数名称使用加密密钥不同,从而增加了算法的复杂度,进而增加了破解难度。
在具体的实施过程中,对于encryptPassword函数,对应的Md5加密结果(即第一函数名称)是“30e091d7dc166cf9”,然后对其生成一个随机的密钥key1,key1=rand(),具体可以通过调用***函数rand来产生一个随机数然后调用TEA加密算法的接口Tea.encrypt来得到第二函数名称,teaResult1=Tea.encrypt(“30e091d7dc166cf9”,key1),其中Tea.encrypt是加密算法TEA的加密接口,参数30e091d7dc166cf9”则是encryptPassword函数其对应的Md5加密结果,参数key1则是随机生成的key1,返回值teaResult1则是加密后的结果第二函数名称。
同理,对其他函数calcliveKey的加密方法也类似,
key2=rand();
teaResult2=Tea.encrypt(“79bd86e6ddefb0c0”,key2);
为了更进一步地对函数名称进行隐藏,本发明实施例在将所述随机数作为所述TEA分组加密算法的密钥,对所述第一函数名称进行加密,获得所述第二函数名称之后,还包括:
基于所述TEA分组加密算法和所述密钥,对所述第二函数名称再次加密,获得第三函数名称。
具体来说,即对第一函数名称利用TEA算法再次加密,当然加密的次数可以根据实际需要设计,即对不同的函数的名称进行加密的次数可以不同,例如上述对calcliveKey的第一函数名称TEA加密后,还可以进行再次TEA加密teaResult22=Tea.encrypt(teaResult2,key2)。具体的对每个函数采用几次TEA算法进行加密,可以使用随机数生成另一个随机数,然后利用该随机数对作为加密密钥的随机数进行运算,例如取余数,如果余数为5,则最多加密4次,以避免加密次数过多而消耗性能,同时可以将加密使用到的key值和进行TEA加密的次数存储到JavaScript的全局变量中,以便后续使用。
步骤S105:将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
具体来说,通过将JS代码中的原始函数名称替换为第二函数名称后,JS代码中的从而所有的核心函数名称和部分筛选出的非核心函数名称都为采用预设加密算法加密后的值。这样当Web应用程序发布后,获取的JS代码中的函数名称是加密后的,从而可以加强对核心函数的保护,如果需要获取函数的功能,则需要获得相应的加密算法和加密的逻辑。具体的,如果需要实现某种功能,则需要调用相关函数,在调用函数时需要获取函数的名称,通过本发明的方法可以很好地隐藏函数的功能。在具体的实施过程中,对于每一个函数,通过本实施方式的方法,会存储函数名称的Md5的的计算结果,在具体需要调用或者使用该函数时,则需要实时计算其对应的TEA加密的值,得到最终的TEA加密的结果去执行该函数。具体实现如下:
对于函数encryptPassword函数其对应的Md5加密结果是30e091d7dc166cf9。
在具体的JavaScript代码中需要调用encryptPassword的地方则这样实现:
首先获取其加密TEA的次数time;
然后从全局变量获取其加密的key值。
teaResult=30e091d7dc166cf9
初始化初始的TEA加密结果为encryptPassword函数的md5值。
For(inti=0;i<time;i++)
teaResult=Tea.encrypt(teaResult,key);
经过循环计算后得到最终的TEA的加密结果。
This[‘teaResult’]();
然后通过JavaScript的this指针来调用其全局函数,从而实现了最终调用该加密后的函数名称对应的函数。
基于同一发明构思,本申请还提供了与实施例一种与Web应用程序的处理方法对应的装置,详见实施例二。
本实施例提供一种Web应用程序的处理装置,如图2所示,该装置包括:
获取模块201,用于获取Web应用程序的JS代码;
第一筛选模块202,用于从所述JS代码中筛选出核心函数;
第一加密模块203,用于基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
第二加密模块204,用于基于预设加密算法对所述第一函数名称进行加密,获得第二函数名称;
替换模块205,用于将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
本实施例提供的装置还包括第二筛选模块,用于在从所述JS代码中筛选出核心函数时:
从所述JS代码中筛选出部分非核心函数。
本实施例提供的装置所述预设加密算法为TEA分组加密算法,所述第二加密模块还用于:
基于预设方法生成随机数;
将所述随机数作为所述TEA分组加密算法的密钥,对所述第一函数名称进行加密,获得所述第二函数名称。
本实施例提供的装置还包括第三加密模块,用于:
基于所述TEA分组加密算法和所述密钥,对所述第二函数名称再次加密,获得第三函数名称。
由于本发明实施例二所介绍的装置,为实施本发明实施例一的Web应用程序的处理方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
实施例三
基于同一发明构思,本申请还提供了一种计算机可读存储介质300,其上存储有计算机程序311,该程序被处理器执行时实现实施一中的方法。
具体来说,上述程序被配置为可以执行下述步骤:
获取Web应用程序的JS代码;
从所述JS代码中筛选出核心函数;
基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
基于预设加密算法对所述第一函数名称进行加密,获得第二函数名称;
将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
实施例四
基于同一发明构思,本申请还提供了一种计算机设备,请参见图4,包括存储401、处理器402及存储在存储器上并可在处理器上运行的计算机程序403,所述处理器402执行所述程序时实现实施一中的方法。
具体来说,上述处理器被配置为可以执行下述步骤:
获取Web应用程序的JS代码;
从所述JS代码中筛选出核心函数;
基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
基于预设加密算法对所述第一函数名称进行加密,获得第二函数名称;
将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明提供的方法中,获取Web应用程序的JS代码后,从JS代码中筛选出核心函数,并利用预设消息摘要算法对核心函数的原始函数名称进行了加密,由于大部分函数而言,是采用函数名称表达该函数的功能,从而通过函数名则可以知道此函数的实现功能,而本发明通过预设消息摘要算法对核心函数的名称进行了加密,因此加强了对核心函数的保护,从而提高了Web应用程序的安全性,并且,本发明还进一步采用预设加密算法对利用消息摘要算法加密后的第一函数名称进行再次加密,然后将第二函数名称替换JS代码中的所述原始函数名称,从而对Web应用程序中的函数名称进行了一步的保护,增加了函数名称的破解难度,从而有效防止了黑客获取JS代码的核心内容,故而进一步提高了安全性,由于黑客容易获取Web应用程序的核心内容而存在安全性较低的技术问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。