发明内容
本发明实施例提供了一种Web应用程序的处理方法及装置,用以解决现有技术中由于黑客容易获取Web应用程序的核心内容而存在安全性较低的技术问题。
第一方面,本发明提供了一种Web应用程序的处理方法,包括:
获取Web应用程序的JS代码;
从所述JS代码中筛选出核心函数,并获得所述核心函数的调用逻辑;
基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
基于预设加密算法和所述调用逻辑对所述第一函数名称进行加密,获得第二函数名称;
将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
可选地,所述方法还包括:在从所述JS代码中筛选出核心函数时:
从所述JS代码中筛选出部分非核心函数。
可选地,所述预设加密算法为TEA分组加密算法,所述基于预设加密算法和所述调用逻辑对所述第一函数名称进行加密获得第二函数名称,包括:
基于预设方法生成随机数,以所述随机数作为所述TEA分组加密算法的密钥;
根据所述调用逻辑获得所述核心函数的调用次数;
基于所述TEA分组加密算法、所述密钥、所述调用次数对所述第一函数名称进行加密,获得所述第二函数名称。
可选地,所述基于所述TEA分组加密算法、所述密钥、所述调用次数对所述第一函数名称进行加密,获得所述第二函数名称,包括:
基于所述TEA分组加密算法和所述密钥,对所述第一函数名称进行加密,获得第一加密结果;
基于所述TEA分组加密算法和所述密钥,对所述加密结果进行加密,获得第二加密结果;
获得当前的加密次数,判断所述当前的加密次数是否达到所述调用次数,
如果达到,则将所述第二加密结果作为所述第二函数名称,
如果未达到,则基于所述TEA分组加密算法和所述密钥,对所述第二加密结果进行加密,获得第三加密结果。
基于同样的发明构思,本发明第二方面提供了一种Web应用程序的处理装置,包括:
获取模块,用于获取Web应用程序的JS代码;
第一筛选模块,用于从所述JS代码中筛选出核心函数,并获得所述核心函数的调用逻辑;
第一加密模块,用于基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
第二加密模块,用于基于预设加密算法和所述调用逻辑对所述第一函数名称进行加密,获得第二函数名称;
替换模块,用于将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
可选的,所述装置还包括第二筛选模块,用于在从所述JS代码中筛选出核心函数时:
从所述JS代码中筛选出部分非核心函数。
可选的,所述预设加密算法为TEA分组加密算法,所述第二加密模块还用于:
基于预设方法生成随机数,以所述随机数作为所述TEA分组加密算法的密钥;
根据所述调用逻辑获得所述核心函数的调用次数;
基于所述TEA分组加密算法、所述密钥、所述调用次数对所述第一函数名称进行加密,获得所述第二函数名称。
可选的,所述第二加密模块还用于:
基于所述TEA分组加密算法和所述密钥,对所述第一函数名称进行加密,获得第一加密结果;
基于所述TEA分组加密算法和所述密钥,对所述加密结果进行加密,获得第二加密结果;
获得当前的加密次数,判断所述当前的加密次数是否达到所述调用次数,
如果达到,则将所述第二加密结果作为所述第二函数名称,
如果未达到,则基于所述TEA分组加密算法和所述密钥,对所述第二加密结果进行加密,获得第三加密结果。
基于同样的发明构思,本发明第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面提供的方法。
基于同样的发明构思,本发明第四方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面提供的方法。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明提供的方法中,获取Web应用程序的JS代码后,从JS代码中筛选出核心函数,并利用预设消息摘要算法对核心函数的原始函数名称进行了加密,由于大部分函数而言,是采用函数名称表达该函数的功能,从而通过函数名则可以知道此函数的实现功能,而本发明通过预设消息摘要算法对核心函数的名称进行了加密,因此加强了对核心函数功能的保护,也即加强了对Web应用程序的核心内容的保护,提高了Web应用程序的安全性,并且,本发明还进一步基于预设加密算法和调用逻辑对第一函数名称进行再次加密,获得第二函数名称,然后将第二函数名称替换JS代码中的所述原始函数名称,由于对核心函数的函数名称的加密与核心函数的调用逻辑有关,从而可以进一步的将函数名称与调用逻辑进行绑定,如果黑客需要获取核心函数的函数名称,则需要清楚该核心函数的调用逻辑,而不同函数的调用逻辑是不同的,也是复杂的,从而对Web应用程序中的函数名称进行了一步的保护,增加了函数名称的破解难度,有效防止了黑客获取JS代码的核心内容,故而进一步提高了安全性,由于黑客容易获取Web应用程序的核心内容而存在安全性较低的技术问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
本申请实施例通过提供一种Web应用程序的处理方法及装置,用以解决现有技术中由于黑客容易获取Web应用程序的核心内容而存在安全性较低的技术问题。
本申请实施例中的技术方案,总体思路如下:
获取Web应用程序的JS代码;从所述JS代码中筛选出核心函数,并获得所述核心函数的调用逻辑;基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;基于预设加密算法和所述调用逻辑对所述第一函数名称进行加密,获得第二函数名称;将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
上述方法中,首先通过预设消息摘要算法对JS代码中的核心函数的原始函数名称进行加密,从而通过隐藏函数名称的方法使得获取核心函数的功能更难,提高了Web应用程序的安全性,并且,进一步根据预设加密算法和核心函数的调用逻辑对第一函数名称进行加密,由于对核心函数的函数名称的加密与核心函数的调用逻辑有关,从而可以进一步的将函数名称与调用逻辑进行绑定,如果黑客需要获取核心函数的函数名称,则需要清楚该核心函数的调用逻辑,而不同函数的调用逻辑是不同的,也是复杂的,从而对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分组加密算法、所述密钥、所述调用次数对所述第一函数名称进行加密,获得所述第二函数名称。
具体来说,采用TEA加密算法对第一函数名称再次进行加密,从而达到的混淆程度更高,同时本发明实施例通过预设方法生成随机数,从而每次对函数名称使用的加密密钥不同,对不同的函数名称使用加密密钥不同,从而增加了算法的复杂度,进而增加了破解难度。
由于本发明实施例中对第一函数名称的加密与调用逻辑有关,则在具体的实施过程中,可以根据调用逻辑获得核心函数的调用次数,以登录为例,需要经历账号输入,密码输入,密码加密的流程,因而根据该函数的调用逻辑获得的调用次数为3次,那么则需要对第一函数名称采用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分组加密算法和所述密钥,对所述加密结果进行加密,获得第二加密结果;
获得当前的加密次数,判断所述当前的加密次数是否达到所述调用次数,
如果达到,则将所述第二加密结果作为所述第二函数名称,
如果未达到,则基于所述TEA分组加密算法和所述密钥,对所述第二加密结果进行加密,获得第三加密结果。
具体来说,对于登录来说,其调用逻辑包括账号输入,密码输入,密码加密,那么第一次加密的过程则在账号输入处理逻辑中加入对第一函数名称的加密:
通过调用系统函数rand来产生一个随机数据key1,key1=rand(),然后利用将key1作为TEA分组加密算法的加密密钥,对第一函数名称30e091d7dc166cf9进行加密:
teaResult1=Tea.encrypt(“30e091d7dc166cf9”,key1),得到的第一加密结果为teaResult1,接着以teaResult1为下一次加密的输入,再次调用系统函数rand来产生一个随机数据key2,其中,key2=rand(),并利用将key2作为TEA分组加密算法的加密密钥,对teaResult1进行加密得到第二加密结果:teaResult2=Tea.encrypt(teaResult1,key2),通过上述两次加密过程可知,在每次加密是都重新生成一个随机数做为加密的密钥值,这样增加了加密的复杂度,从而增加了原始函数名称的破解难度,故而增加了原始函数的核心内容的保护,并且至少保证对第一函数名称进行两次加密。
在对第一函数名称进行两次加密后,统计当前的加密次数,并将该加密次数是否达到调用逻辑的调用次数,如果达到,则将上述得到的第二加密结果作为第二函数名称,如果未达到,则需要对第二加密结果进行再次加密,上述得到的第二加密结果为teaResult2,然后重复上述的加密过程,重新生成一个随机数,将随机数作为TEA加密算法的密钥对teaResult2,具体的实现代码如下:
key3=rand();
teaResult3=Tea.encrypt(teaResult2,key3);
通过上述第三次加密,最终得到的函数名称则是teaResult3,即为第二函数名称,同理对于其他函数也使用同样的方法来对函数名称加密,同时对于加密过程中使用的KEY值(key1、key2、key3等等)也会保存到全局变量中,方便后续读取和利用。
步骤S105:将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
具体来说,通过将JS代码中的原始函数名称替换为第二函数名称后,JS代码中的从而所有的核心函数名称和部分筛选出的非核心函数名称都为采用预设加密算法加密后的值。这样当Web应用程序发布后,获取的JS代码中的函数名称是加密后的,从而可以加强对核心函数的保护,如果需要获取函数的功能,则需要获得相应的加密算法以及函数的调用逻辑,即函数名称的加密与函数的调用逻辑相关,由于函数的调用逻辑比较复杂,因此达到较好的保护函数代码的目的,进而加强了对web应用程序的核心内容的保护。
在具体的实施过程中,对于每一个函数,通过本实施方式的方法,会存储函数名称的Md5的的计算结果,在具体需要调用或者使用该函数时,则需要实时计算其对应的TEA加密的值,得到最终的TEA加密的结果去执行该函数。具体实现如下:
对于函数encryptPassword函数其对应的Md5加密结果是30e091d7dc166cf9。
在具体的JavaScript代码中需要调用encryptPassword的地方则其函数名称变成了teaResult3,因此本发明实施例需要通过再一次的重新计算得到teaResult3的值,从而才能够正确的调用此函数。对于登录必须经历账号输入,密码输入,密码加密这个流程,本发明实施例则在此流程中加入对密码加密函数名称的加密。
首先在账号输入处理逻辑中加入对函数名称的加密。
从全局变量可以获取到加密使用的key1值,此时存储的加密函数encryptPassword的名称是其Md5值30e091d7dc166cf9,即teaResult1=Tea.encrypt(“30e091d7dc166cf9”,key1);
接下来,在密码输入处理逻辑中加入对函数名称的加密。
其加密的初始值则是步骤1加密的结果teaResult1。
从全局变量可以获取到加密使用的key2值。
teaResult2=Tea.encrypt(teaResult1,key2);
然后在密码加密处理逻辑中加入对函数名称的加密。
其加密的初始值则是步骤2加密的结果teaResult2。
从全局变量可以获取到加密使用的key3值。
teaResult3=Tea.encrypt(teaResult2,key3);
通过上述方法,最终可以得到存储在JavaScript页面中的函数名encryptPassword加密后的函数名称,从而可以正确的调用到此函数。
This[‘teaResult3’]();
然后通过JavaScript的this指针来调用其全局加密函数,从而实现了最终调用该加密后的函数。
基于同一发明构思,本申请还提供了与实施例一种与Web应用程序的处理方法对应的装置,详见实施例二。
本实施例提供一种Web应用程序的处理装置,如图2所示,该装置包括:
获取模块201,用于获取Web应用程序的JS代码;
第一筛选模块202,用于从所述JS代码中筛选出核心函数,并获得所述核心函数的调用逻辑;
第一加密模块203,用于基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
第二加密模块204,用于基于预设加密算法和所述调用逻辑对所述第一函数名称进行加密,获得第二函数名称;
替换模块205,用于将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
本实施例提供的装置还包括第二筛选模块,用于在从所述JS代码中筛选出核心函数时:
从所述JS代码中筛选出部分非核心函数。
本实施例提供的装置所述预设加密算法为TEA分组加密算法,所述第二加密模块204还用于:
基于预设方法生成随机数,以所述随机数作为所述TEA分组加密算法的密钥;
根据所述调用逻辑获得所述核心函数的调用次数;
基于所述TEA分组加密算法、所述密钥、所述调用次数对所述第一函数名称进行加密,获得所述第二函数名称。
本实施例提供的装置中,所述第二加密模块204还用于:
基于所述TEA分组加密算法和所述密钥,对所述第一函数名称进行加密,获得第一加密结果;
基于所述TEA分组加密算法和所述密钥,对所述加密结果进行加密,获得第二加密结果;
获得当前的加密次数,判断所述当前的加密次数是否达到所述调用次数,
如果达到,则将所述第二加密结果作为所述第二函数名称,
如果未达到,则基于所述TEA分组加密算法和所述密钥,对所述第二加密结果进行加密,获得第三加密结果。
由于本发明实施例二所介绍的装置,为实施本发明实施例一的Web应用程序的处理方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
实施例三
基于同一发明构思,本申请还提供了一种计算机可读存储介质300,其上存储有计算机程序311,该程序被处理器执行时实现实施一中的方法。
具体来说,上述程序被配置为可以执行下述步骤:
获取Web应用程序的JS代码;
从所述JS代码中筛选出核心函数,并获得所述核心函数的调用逻辑;
基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
基于预设加密算法和所述调用逻辑对所述第一函数名称进行加密,获得第二函数名称;
将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
实施例四
基于同一发明构思,本申请还提供了一种计算机设备,请参见图4,包括存储401、处理器402及存储在存储器上并可在处理器上运行的计算机程序403,所述处理器402执行所述程序时实现实施一中的方法。
具体来说,上述处理器被配置为可以执行下述步骤:
获取Web应用程序的JS代码;
从所述JS代码中筛选出核心函数,并获得所述核心函数的调用逻辑;
基于预设消息摘要算法对所述核心函数的原始函数名称进行加密,获得第一函数名称;
基于预设加密算法和所述调用逻辑对所述第一函数名称进行加密,获得第二函数名称;
将所述JS代码中的所述原始函数名称替换为所述第二函数名称。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明提供的方法中,获取Web应用程序的JS代码后,从JS代码中筛选出核心函数,并利用预设消息摘要算法对核心函数的原始函数名称进行了加密,由于大部分函数而言,是采用函数名称表达该函数的功能,从而通过函数名则可以知道此函数的实现功能,而本发明通过预设消息摘要算法对核心函数的名称进行了加密,因此加强了对核心函数功能的保护,也即加强了对Web应用程序的核心内容的保护,提高了Web应用程序的安全性,并且,本发明还进一步基于预设加密算法和调用逻辑对第一函数名称进行再次加密,获得第二函数名称,然后将第二函数名称替换JS代码中的所述原始函数名称,由于对核心函数的函数名称的加密与核心函数的调用逻辑有关,从而可以进一步的将函数名称与调用逻辑进行绑定,如果黑客需要获取核心函数的函数名称,则需要清楚该核心函数的调用逻辑,而不同函数的调用逻辑是不同的,也是复杂的,从而对Web应用程序中的函数名称进行了一步的保护,增加了函数名称的破解难度,有效防止了黑客获取JS代码的核心内容,故而进一步提高了安全性,由于黑客容易获取Web应用程序的核心内容而存在安全性较低的技术问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。