CN111209029A - 一种代码修改确定方法、装置、电子设备及存储介质 - Google Patents
一种代码修改确定方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111209029A CN111209029A CN202010039332.6A CN202010039332A CN111209029A CN 111209029 A CN111209029 A CN 111209029A CN 202010039332 A CN202010039332 A CN 202010039332A CN 111209029 A CN111209029 A CN 111209029A
- Authority
- CN
- China
- Prior art keywords
- code
- hash value
- server
- terminal device
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Abstract
本申请提供一种代码修改确定方法、装置、电子设备及存储介质,该方法包括:接收终端设备发送的第一哈希值,第一哈希值为终端设备根据第一代码生成的,第一代码是终端设备在接收服务器发送的第二代码之后存储的代码;判断第一哈希值与预先生成的第二哈希值是否相同,第二哈希值是根据服务器存储的第二代码生成的哈希值;若否,则确定第二代码被修改过。在上述的实现过程中,通过服务器接收终端设备发送的第一哈希值;判断第一哈希值与预先生成的第二哈希值是否相同;若第一哈希值和第二哈希值不相同,则确定第二代码被修改过;从而有效地改善了服务器难以确定前端代码被终端设备修改过的问题。
Description
技术领域
本申请涉及计算机安全的技术领域,具体而言,涉及一种代码修改确定方法、装置、电子设备及存储介质。
背景技术
浏览器,是指访问服务器上的数据的软件工具,这里的浏览器包括:Firefox浏览器,Chrome浏览器,Safari浏览器,InternetExplorer(IE)浏览器等等,浏览器使用的引擎例如:FirefoxDriver引擎、InternetExplorerDriver引擎和ChromeDriver引擎等,当然,在一些情况下,这里的浏览器引擎也可以是两种或两种以上的引擎共同使用,例如:定制的浏览器共同使用InternetExplorerDriver引擎和ChromeDriver引擎。
前端代码(front-end code),是指运行于服务器向终端设备发送的且运行于终端设备上的代码,这里的前端代码通常被终端设备的浏览器所执行,这里的前端代码例如:超文本标记语言(HyperText Markup Language,HTML)代码、JavaScript脚本语言和层叠样式表(Cascading Style Sheets,CSS)代码等等。
目前,服务器向终端设备发送的前端代码通常都是可见的,即终端设备的用户可以查看并使用浏览器调试工具执行前端代码;攻击者很容易就能够通过修改前端代码的源码来达到相应的非法目的,服务器难以确定前端代码被终端设备修改过。
发明内容
本申请实施例的目的在于提供一种代码修改确定方法、装置、电子设备及存储介质,用于改善服务器难以确定前端代码被终端设备修改过的问题。
本申请实施例提供了一种代码修改确定方法,应用于服务器,包括:接收终端设备发送的第一哈希值,所述第一哈希值为所述终端设备根据第一代码生成的,所述第一代码是所述终端设备在接收所述服务器发送的第二代码之后存储的代码;判断所述第一哈希值与预先生成的第二哈希值是否相同,所述第二哈希值是根据所述服务器存储的第二代码生成的哈希值;若否,则确定所述第二代码被修改过。在上述的实现过程中,通过接收终端设备发送的第一哈希值,第一哈希值为终端设备根据第一代码生成的,第一代码是终端设备在接收服务器发送的第二代码之后存储的代码;判断第一哈希值与预先生成的第二哈希值是否相同,第二哈希值是根据服务器存储的第二代码生成的哈希值;若否,则确定第二代码被修改过;从而有效地改善了服务器难以确定前端代码被终端设备修改过的问题。
可选地,在本申请实施例中,在所述接收终端设备发送的第一哈希值之前,还包括:向所述终端设备发送所述第二代码,所述第二代码用于被所述终端设备存储和执行。在上述的实现过程中,通过向终端设备发送第二代码,第二代码用于被终端设备存储和执行;从而有效地提高了终端设备获取第二代码的速度。
可选地,在本申请实施例中,所述向所述终端设备发送所述第二代码,包括:将所述第二代码进行混淆处理,获得混淆代码;向所述终端设备发送所述混淆代码。在上述的实现过程中,通过将第二代码进行混淆处理,获得混淆代码;向终端设备发送混淆代码;从而有效地增加了攻击者攻击服务器的难度,增强了服务器的安全性。
可选地,在本申请实施例中,在所述判断所述第一哈希值与第二哈希值是否相同之前,还包括:将所述第二代码中的全部函数名称拼接,获得函数字符串;计算所述函数字符串的哈希值,获得所述第二哈希值。在上述的实现过程中,通过将第二代码中的全部函数名称拼接,获得函数字符串;计算函数字符串的哈希值,获得第二哈希值;简化了代码差异对比的操作,从而有效地提高了判断代码是否被修改的速度。
可选地,在本申请实施例中,所述计算所述全部函数名称的哈希值,获得所述第二哈希值,包括:若所述第二代码中的全部函数名称的数量为多个,则对所述第二代码中的全部函数名称进行排序,将所述全部函数名称的哈希值确定为所述第二哈希值。在上述的实现过程中,通过若第二代码中的全部函数名称的数量为多个,则对第二代码中的全部函数名称进行排序,将全部函数名称的哈希值确定为第二哈希值;通过对第二代码中的全部函数名称进行排序,再根据排序后的第一代码的全部函数名称的哈希值和第二代码的全部函数名称的哈希值进行对比,从而有效地提高了判断代码是否被修改的正确率。
本申请实施例还提供了一种代码修改确定方法,应用于终端设备,包括:根据第一代码生成第一哈希值,所述第一代码是在接收服务器发送的第二代码之后存储的代码;向所述服务器发送所述第一哈希值。在上述的实现过程中,通过根据第一代码生成第一哈希值,第一代码是在接收服务器发送的第二代码之后存储的代码;向服务器发送第一哈希值;从而有效地提高了服务器获得第一哈希值的速度。
本申请实施例还提供了一种代码修改确定装置,应用于服务器,包括:第一哈希接收模块,用于接收终端设备发送的第一哈希值,所述第一哈希值为所述终端设备根据第一代码生成的,所述第一代码是所述终端设备在接收所述服务器发送的第二代码之后存储的代码;哈希值判断模块,用于判断所述第一哈希值与预先生成的第二哈希值是否相同,所述第二哈希值是根据所述服务器存储的第二代码生成的哈希值;代码修改确定模块,用于若所述第一哈希值与预先生成的第二哈希值不相同,则确定所述第二代码被修改过。
可选地,在本申请实施例中,还包括:第二代码发送模块,用于向所述终端设备发送所述第二代码,所述第二代码用于被所述终端设备存储和执行。
可选地,在本申请实施例中,所述第二代码发送模块,包括:混淆代码获得模块,用于将所述第二代码进行混淆处理,获得混淆代码;混淆代码发送模块,用于向所述终端设备发送所述混淆代码。
可选地,在本申请实施例中,还包括:函数字符获得模块,用于将所述第二代码中的全部函数名称拼接,获得函数字符串;第二哈希获得模块,用于计算所述函数字符串的哈希值,获得所述第二哈希值。
可选地,在本申请实施例中,所述第二哈希获得模块,包括:函数名称排序模块,用于若所述第二代码中的全部函数名称的数量为多个,则对所述第二代码中的全部函数名称进行排序,将所述全部函数名称的哈希值确定为所述第二哈希值。
本申请实施例还提供了一种代码修改确定装置,应用于终端设备,包括:第一哈希生成模块,用于根据第一代码生成第一哈希值,所述第一代码是在接收服务器发送的第二代码之后存储的代码;第一哈希发送模块,用于向所述服务器发送所述第一哈希值。
本申请实施例还提供了一种电子设备,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如上所述的方法。
本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上所述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出的本申请实施例提供的代码修改确定方法的流程示意图;
图2示出的本申请实施例提供的代码修改确定方法的交互时序图;
图3示出的本申请实施例提供的代码修改确定装置的示意图;
图4示出的本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。
在介绍本申请实施例提供的代码修改确定方法之前,先介绍本申请实施例所涉及的一些概念,本申请实施例所涉及的一些概念如下:
IP(Internet Protocol)地址,是分配给用户上网使用的网际协议的设备的数字标签。IP地址通常包括:公网IP地址和私网IP地址;这里的公网IP地址是指在因特网上直接可达的地址,即在因特网上能够直接被访问的IP地址;意味着如果一个电子设备有一个公网地址,那就意味着该电子设备不但能访问其它设备,还能被其它设备访问,这里的公网地址是架设各种服务器必不可少的条件。这里的私网IP地址是指在因特网上不能直接到达的地址,即在因特网上不能直接被访问的IP地址;意味着只拥有私网IP地址的设备只能够访问因特网上的其它设备,而不能够被因特网上的其它设备访问。
前端(英语:front-end)和后端(英语:back-end),是指描述系统或者进程的通用词汇;通常前端的作用是输入信息和输出信息,而后端的作用是进行对输入信息进行处理,获得输出信息;具体例如:计算机程序的界面样式和视觉呈现均属于前端,而计算机程序的业务逻辑处理和微服务处理等均属于后端。
后端代码(back-end code),是指运行于服务器上执行的代码,该代码的作用为接收终端设备发送的输入信息,并对输入信息进行计算获得输出信息,然后将输出信息发送给终端设备,终端设备接收到输出信息之后,可以显示输出信息,或者将输出信息进一步处理后显示,或者转发给其它的设备。
混淆处理,是指将代码进行混淆(Obfuscation),即将计算机程序的代码,转换成功能上等价,但是难于阅读和理解的形式的过程;代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码;混淆代码是指经过上述混淆处理后的代码。
哈希值(hash value),是指用于获取多个图像的差异值或相似度,具体获得哈希值的方法例如:采用平均哈希值算法(又称均值哈希算法)或者感知哈希值算法对目标数据进行哈希计算获得哈希值;当然也可以采用MD5、RSA和RSA2等算法获取哈希值。这里的MD5算法是指一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue),用于确保信息传输完整一致。
服务器是指通过网络提供计算服务的设备,服务器例如:x86服务器以及非x86服务器,非x86服务器包括:大型机、小型机和UNIX服务器。当然在具体的实施过程中,上述的服务器可以具体选择大型机或者小型机,这里的小型机是指采用精简指令集计算(ReducedInstruction Set Computing,RISC)、单字长定点指令平均执行速度(MillionInstructions Per Second,MIPS)等专用处理器,主要支持UNIX操作系统的封闭且专用的提供计算服务的设备;这里的大型机,又名大型主机,是指使用专用的处理器指令集、操作系统和应用软件来提供计算服务的设备。
需要说明的是,本申请实施例提供的代码修改确定方法可以被电子设备执行,这里的电子设备是指具有执行计算机程序功能的设备终端或者上述的服务器,设备终端例如:智能手机、个人电脑(personal computer,PC)、平板电脑、个人数字助理(personaldigital assistant,PDA)、移动上网设备(mobile Internet device,MID)、网络交换机或网络路由器等。
在介绍本申请实施例提供的代码修改确定方法之前,先介绍该代码修改确定方法适用的应用场景,这里的应用场景包括但不限于:使用该代码修改确定方法确定服务器发送给终端设备的前端代码是否被修改,对比第一代码和第二代码是否相同,使用该代码修改确定方法检测到前端代码被终端设备修改之后,增加对终端设备的防御措施等;这里的增加对终端设备的防御措施例如:限制该终端设备的IP地址访问或者减少该终端设备的访问权限等等。
请参见图1示出的本申请实施例提供的代码修改确定方法的流程示意图;该代码修改确定方法应用于服务器,上述的方法可以包括如下步骤:
步骤S110:服务器接收终端设备发送的第一哈希值。
终端设备(terminal device),是指与服务器通过通信链路连接,且具有执行计算机程序功能的设备,终端设备可以是平板电脑、智能手机、个人数字助理或电子书阅读器等;或者,该终端设备也可以是智能音响、录音笔、手机、遥控器、个人电脑、网络交换机、网络路由器或台式主机等,具体例如:台式电脑或者笔记本电脑等个人计算机设备。
第一哈希值,是指终端设备根据第一代码生成的哈希值,第一代码是终端设备在接收服务器发送的第二代码之后存储的代码,即第二代码是指服务器发送给终端设备的代码,第一代码是指终端设备将第二代码存储后,又获取终端设备上的代码;换句话说,终端设备对应的用户可能更改了服务器发送给终端设备的第二代码,也可能没有更改。若没有更改,则第一代码和第二代码是一样的;若更改,则第一代码和第二代码是不一样的,即第二代码被终端设备对应的用户更改为第一代码;具体例如:若第一代码为abc,且使用MD5算法作为哈希值的计算方法,那么第一代码的哈希值为900150983cd24fb0d6963f7d28e17f72。
上述的步骤S110的实施方式例如:服务器通过传输控制协议(TransmissionControl Protocol,TCP)接收终端设备发送的第一哈希值;这里的TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议;在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层;不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
上述的步骤S110的实施方式又例如:服务器通过用户数据报协议(User DatagramProtocol,UDP)接收终端设备发送的第一哈希值;这里的UDP协议的中文名是用户数据报协议,UDP协议是开放式系统互联(Open System Interconnection,OSI)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
在步骤S110之后,执行步骤S120:服务器判断第一哈希值与预先生成的第二哈希值是否相同。
第二哈希值,是指根据服务器存储的第二代码生成的哈希值;这里的预先生成的第二哈希值是指在执行步骤S120之前,已经根据服务器存储的第二代码生成了第二哈希值。
上述的第二哈希值的获得方法可以包括如下步骤:
步骤S121:服务器将第二代码中的全部函数名称拼接,获得函数字符串。
上述的步骤S121的实施方式例如:获得第二代码中的全部函数名称;并将第二代码中的全部函数名称拼接,获得函数字符串;具体例如:第二代码中一共有三个函数,这三个函数的名称分别为A、B和C,那么将第二代码中的全部函数名称拼接,获得ABC,则这里的ABC则可以理解为函数字符串。当然,也可以使用分割符对函数名称进行分割,例如分隔符为竖线,那么将第二代码中的全部函数名称拼接,获得A|B|C,则这里的A|B|C则可以理解为函数字符串。当然,在具体的实施过程中,函数的名称也能是没有排序的,例如获得的全部函数名称分别为B、A和C,可以先对全部函数名称进行排序,获得A、B和C,那么将第二代码中的全部函数名称拼接,获得ABC。
在具体的实施过程中,除了上述将第二代码中的全部函数名称拼接之外,还可以将第二代码中的所调用的函数名称进行拼接,即获取当前调用的堆栈中函数名称,对当前调用的堆栈中函数名称进行拼接,获得上述的函数字符串。当然,也可以将全部的或者调用的函数名称、函数体和/或函数签名进行拼接,获得上述的函数字符串。服务器可以使用后端代码将第二代码中的全部函数名称或者所调用的函数名称拼接,也可以使用后端代码将全部的或者调用的函数名称、函数体和/或函数签名进行拼接;这里的后端代码包括但不限于Python、JAVA、C++、C或/和golang等语言编写的代码。
在上述的实现过程中,通过若第二代码中的全部函数名称的数量为多个,则对第二代码中的全部函数名称进行排序,将全部函数名称的哈希值确定为第二哈希值;通过对第二代码中的全部函数名称进行排序,再根据排序后的第一代码的全部函数名称的哈希值和第二代码的全部函数名称的哈希值进行对比,从而有效地提高了判断代码是否被修改的正确率。
步骤S122:服务器计算函数字符串的哈希值,获得第二哈希值。
上述的获得第二哈希值的实施方式例如:若获得的函数字符串为abc,则该函数字符串的哈希值可以为900150983cd24fb0d6963f7d28e17f72;若获得的函数字符串为ABC,则该函数字符串的哈希值可以为902fbdd2b1df0c4f70b4a5d23525e932;若获得的函数字符串为A|B|C,则该函数字符串的哈希值为3ff3f27598a1a925ce72d7cde4744ef0;可以将上述的函数字符串的哈希值确定为第二哈希值。在上述的实现过程中,通过将第二代码中的全部函数名称拼接,获得函数字符串;计算函数字符串的哈希值,获得第二哈希值;简化了代码差异对比的操作,从而有效地提高了判断代码是否被修改的速度。
在步骤S120之后,执行步骤S130:若第一哈希值与第二哈希值不相同,则服务器确定第二代码被修改过。
上述的步骤S130的实施方式包括:若第一哈希值与第二哈希值相同,则服务器确定第二代码没有被修改过,具体例如:若第一哈希值和第二哈希值均为900150983cd24fb0d6963f7d28e17f72,则服务器可以确定第二代码没有被修改过;相反地,若第一哈希值为902fbdd2b1df0c4f70b4a5d23525e932,而第二哈希值为900150983cd24fb0d6963f7d28e17f72;那么服务器可以确定第二代码没有被修改过。
在步骤S120之后,也可以执行步骤S131:若第一哈希值与第二哈希值相同,则服务器确定第二代码没有被修改过。
可以理解的是,若第一哈希值与第二哈希值相同,则服务器确定第二代码没有被修改过,具体例如:若第一哈希值和第二哈希值均为900150983cd24fb0d6963f7d28e17f72,则服务器可以确定第二代码没有被修改过。
在上述的实现过程中,通过接收终端设备发送的第一哈希值,第一哈希值为终端设备根据第一代码生成的,第一代码是终端设备在接收服务器发送的第二代码之后存储的代码;判断第一哈希值与预先生成的第二哈希值是否相同,第二哈希值是根据服务器存储的第二代码生成的哈希值;若否,则确定第二代码被修改过;从而有效地改善了服务器难以确定前端代码被终端设备修改过的问题。
可选地,在确定第二代码被修改过之后,还可以增加对终端设备的防御措施,即在步骤S130之后,还可以包括如下步骤:
步骤S140:若确定第二代码被修改过,则增加对终端设备的防御措施。
上述的步骤S140的实施方式例如:若确定第二代码被修改过,则限制终端设备的访问次数、访问时间段或者访问外网IP地址等,这里的限制终端设备的访问次数、访问时间段或者访问外网IP地址等措施均可以理解为增加了对终端设备的防御措施。也就是说,若确定第二代码被修改过,则能够修改第二代码对应的终端设备的用户可能为攻击者,增加对终端设备的防御措施就是提前防御攻击者的攻击,减少被攻击者攻击的风险。
可选地,在确定第二代码被修改过之后,还可以发送提醒消息,即在步骤S130之后,还可以包括如下步骤:
步骤S150:若确定第二代码被修改过,则根据终端设备的标识信息生成提醒消息。
标识信息为终端设备的唯一标识信息,唯一标识信息例如:媒体访问控制地址(Media Access Control Address,MAC)地址、硬盘序列号、Windows的产品标识号、MachineGUID或主板smBIOS UUID等等。这里的终端设备的标识信息例如可以是终端设备的IP地址,也可以是终端设备的MAC地址。
上述的步骤S150的实施方式例如:若确定第二代码被修改过,则根据终端设备的IP地址生成提醒消息,提醒管理员将该IP地址加入黑名单;或者,若确定第二代码被修改过,则根据终端设备的IP地址生成提醒消息,将服务器向该终端设备发送该提醒消息,以提醒该终端设备可能存在攻击行为。在具体的实施过程中,服务器还可以通过异步JavaScript和XML(Asynchronous Javascript And XML,AJAX)的方式向该终端设备发送该提醒消息;这里的AJAX是指一种创建交互式网页应用的网页开发技术,是一种用于创建快速动态网页的技术,一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过根据终端设备的IP地址生成提醒消息,提醒管理员将该IP地址加入黑名单;或者服务器向该终端设备发送该提醒消息,从而有效地减小了服务器被攻击者攻击的风险。
请参见图2示出的本申请实施例提供的代码修改确定方法的交互时序图;该代码修改确定方法可以包括如下步骤:
步骤S210:终端设备向服务器发送代码请求。
代码请求,是指请求服务器发送终端设备所需要执行的前端代码,前端代码例如:HTML代码、JavaScript脚本语言和CSS代码等等。这里的JavaScript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。JavaScript的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于用户终端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。
上述的终端设备向服务器发送代码请求的实施方式例如:终端设备通过超文本传输协议(Hyper Text Transfer Protocol,HTTP)向服务器发送代码请求;这里的HTTP协议是一个简单的请求响应协议,HTTP协议通常运行在传输控制协议(Transmission ControlProtocol,TCP)之上,HTTP协议指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
在具体的实施过程中,上述的终端设备向服务器发送代码请求的实施方式又例如:终端设备通过代理服务器(Proxy Server)向服务器发送代码请求,这里的代理服务器是指代理网络用户去取得网络信息的服务器;形象地说,代理服务器是网络信息的中转站,是源主机和目的主机之间的中间代理机构,例如可以是个人网络中的主机和Internet服务商的服务器之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。
步骤S220:服务器向终端设备发送第二代码。
第二代码,是指服务器发送给终端设备的代码,这里的第二代码用于被终端设备存储和执行,具体例如:将服务器发送给终端设备的前端代码确定为第二代码,第二代码可以被终端设备的浏览器执行,以显示渲染界面和显示业务数据等等。
上述的步骤S220的实施方式例如可以包括如下步骤:
步骤S221:服务器将第二代码进行混淆处理,获得混淆代码。
上述的步骤S221的实施方式例如:将第二代码中的各种元素,如变量、函数、类的名字改写成无意义的名字;具体例如:改写单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途;或者重写代码中的部分逻辑,将其变成功能上等价、但是更难理解的形式,或者将for循环改写成while循环、将循环改写成递归、精简中间变量等,可以将上述任一种或者任意多种组合改变方式获得的代码确定为混淆代码。
当然在具体的实施过程中,还可以使用混淆工具进行混淆处理,具体例如:对应JavaScript代码,可以使用uglify-js工具来进行混淆处理,并输出混淆前的函数名称和混淆后的函数名称的对应映射关系;从该对应映射关系中,可以获得混淆后的多个函数名称,可以将计算出的多个函数名称的哈希值确定为上述的第二哈希值。在上述的实现过程中,通过将第二代码进行混淆处理,获得混淆代码;向终端设备发送混淆代码;从而有效地增加了攻击者攻击服务器的难度,增强了服务器的安全性。
步骤S222:服务器向终端设备发送混淆代码。
上述的服务器向终端设备发送混淆代码的实施方式例如:服务器通过HTTP协议向终端设备发送混淆代码,这里的混淆代码可以是混淆处理后的前端代码,以使终端设备存储、修改或使用浏览器执行混淆后的前端代码。在上述的实现过程中,通过向终端设备发送第二代码,第二代码用于被终端设备存储和执行;从而有效地提高了终端设备获取第二代码的速度。
步骤S230:终端设备接收并存储第二代码,获取终端设备的代码获得第一代码。
可以理解的是,这里的第一代码是终端设备在接收服务器发送的第二代码之后存储的代码,即第二代码是指服务器发送给终端设备的代码,第一代码是指终端设备将第二代码存储后,又获取终端设备上的代码;换句话说,终端设备对应的用户可能更改了服务器发送给终端设备的第二代码,也可能没有更改。若没有更改,则第一代码和第二代码是一样的;若更改,则第一代码和第二代码是不一样的,即第二代码被终端设备对应的用户更改为第一代码。
上述的终端设备接收并存储第二代码的实施方式例如:终端设备接收第二代码,并将第二代码存储至浏览器的本地缓存中。上述的获取终端设备的代码获得第一代码的实施方式例如:从本地缓存中获取终端设备的之前存储的代码,获得第一代码;这里的第一代码是在接收服务器发送的第二代码之后存储的代码。
步骤S240:终端设备根据第一代码生成第一哈希值,并向服务器发送第一哈希值。
上述的终端设备根据第一代码生成第一哈希值的实施方式例如:若第一代码为abc,且使用MD5算法作为哈希值的计算方法,那么第一代码的哈希值为900150983cd24fb0d6963f7d28e17f72,即将第一代码的哈希值确定为第一哈希值,并向服务器发送900150983cd24fb0d6963f7d28e17f72。
在上述的实现过程中,通过根据第一代码生成第一哈希值,第一代码是在接收服务器发送的第二代码之后存储的代码;向服务器发送第一哈希值;从而有效地提高了服务器获得第一哈希值的速度。
步骤S250:服务器接收终端设备发送的第一哈希值,并判断第一哈希值与根据第二代码生成的第二哈希值是否相同。
其中,该步骤的实施原理和实施方式与步骤S110和步骤S120的实施原理和实施方式是相似或类似的;以及根据第二代码生成的第二哈希值的实施方式与步骤S121和步骤S122的实施原理和实施方式是相似或类似的,因此,这里不再对该步骤的实施方式和实施原理进行说明,如有不清楚的地方,可以参考对步骤S110、以及步骤S120至步骤S122的描述。
步骤S260:若第一哈希值与第二哈希值不相同,则服务器确定第二代码被修改过。
其中,该步骤的实施原理和实施方式与步骤S130的实施原理和实施方式是相似或类似的,因此,这里不再对该步骤的实施方式和实施原理进行说明,如有不清楚的地方,可以参考对步骤S130的描述。
请参见图3示出的本申请实施例提供的代码修改确定装置的示意图;本申请实施例提供了一种代码修改确定装置300,应用于服务器,包括:
第一哈希接收模块310,用于接收终端设备发送的第一哈希值,第一哈希值为终端设备根据第一代码生成的,第一代码是终端设备在接收服务器发送的第二代码之后存储的代码。
哈希值判断模块320,用于判断第一哈希值与预先生成的第二哈希值是否相同,第二哈希值是根据服务器存储的第二代码生成的哈希值。
代码修改确定模块330,用于若第一哈希值与预先生成的第二哈希值不相同,则确定第二代码被修改过。
可选地,在本申请实施例中,还包括:
第二代码发送模块,用于向终端设备发送第二代码,第二代码用于被终端设备存储和执行。
可选地,在本申请实施例中,第二代码发送模块,包括:
混淆代码获得模块,用于将第二代码进行混淆处理,获得混淆代码。
混淆代码发送模块,用于向终端设备发送混淆代码。
可选地,在本申请实施例中,还可以包括:
函数字符获得模块,用于将第二代码中的全部函数名称拼接,获得函数字符串。
第二哈希获得模块,用于计算函数字符串的哈希值,获得第二哈希值。
可选地,在本申请实施例中,第二哈希获得模块,包括:
函数名称排序模块,用于若第二代码中的全部函数名称的数量为多个,则对第二代码中的全部函数名称进行排序,将全部函数名称的哈希值确定为第二哈希值。
本申请实施例提供了一种代码修改确定装置,应用于终端设备,包括:
第一哈希生成模块,用于根据第一代码生成第一哈希值,第一代码是在接收服务器发送的第二代码之后存储的代码。
第一哈希发送模块,用于向服务器发送第一哈希值。
应理解的是,该装置与上述的代码修改确定方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作系统(operating system,OS)中的软件功能模块。
请参见图4示出的本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备400,包括:处理器410和存储器420,存储器420存储有处理器410可执行的机器可读指令,机器可读指令被处理器410执行时执行如上的方法。
本申请实施例还提供了一种存储介质430,该存储介质430上存储有计算机程序,该计算机程序被处理器410运行时执行如上的代码修改确定方法。
其中,存储介质430可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。
Claims (10)
1.一种代码修改确定方法,其特征在于,应用于服务器,包括:
接收终端设备发送的第一哈希值,所述第一哈希值为所述终端设备根据第一代码生成的,所述第一代码是所述终端设备在接收所述服务器发送的第二代码之后存储的代码;
判断所述第一哈希值与预先生成的第二哈希值是否相同,所述第二哈希值是根据所述服务器存储的第二代码生成的哈希值;
若否,则确定所述第二代码被修改过。
2.根据权利要求1所述的方法,其特征在于,在所述接收终端设备发送的第一哈希值之前,还包括:
向所述终端设备发送所述第二代码,所述第二代码用于被所述终端设备存储和执行。
3.根据权利要求2所述的方法,其特征在于,所述向所述终端设备发送所述第二代码,包括:
将所述第二代码进行混淆处理,获得混淆代码;
向所述终端设备发送所述混淆代码。
4.根据权利要求1所述的方法,其特征在于,在所述判断所述第一哈希值与第二哈希值是否相同之前,还包括:
将所述第二代码中的全部函数名称拼接,获得函数字符串;
计算所述函数字符串的哈希值,获得所述第二哈希值。
5.根据权利要求4所述的方法,其特征在于,所述计算所述全部函数名称的哈希值,获得所述第二哈希值,包括:
若所述第二代码中的全部函数名称的数量为多个,则对所述第二代码中的全部函数名称进行排序,将所述全部函数名称的哈希值确定为所述第二哈希值。
6.一种代码修改确定方法,其特征在于,应用于终端设备,包括:
根据第一代码生成第一哈希值,所述第一代码是在接收服务器发送的第二代码之后存储的代码;
向所述服务器发送所述第一哈希值。
7.一种代码修改确定装置,其特征在于,应用于服务器,包括:
第一哈希接收模块,用于接收终端设备发送的第一哈希值,所述第一哈希值为所述终端设备根据第一代码生成的,所述第一代码是所述终端设备在接收所述服务器发送的第二代码之后存储的代码;
哈希值判断模块,用于判断所述第一哈希值与预先生成的第二哈希值是否相同,所述第二哈希值是根据所述服务器存储的第二代码生成的哈希值;
代码修改确定模块,用于若所述第一哈希值与预先生成的第二哈希值不相同,则确定所述第二代码被修改过。
8.一种代码修改确定装置,其特征在于,应用于终端设备,包括:
第一哈希生成模块,用于根据第一代码生成第一哈希值,所述第一代码是在接收服务器发送的第二代码之后存储的代码;
第一哈希发送模块,用于向所述服务器发送所述第一哈希值。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的方法。
10.一种存储介质,其特征在于,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010039332.6A CN111209029A (zh) | 2020-01-14 | 2020-01-14 | 一种代码修改确定方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010039332.6A CN111209029A (zh) | 2020-01-14 | 2020-01-14 | 一种代码修改确定方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111209029A true CN111209029A (zh) | 2020-05-29 |
Family
ID=70789675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010039332.6A Pending CN111209029A (zh) | 2020-01-14 | 2020-01-14 | 一种代码修改确定方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209029A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111736893A (zh) * | 2020-06-24 | 2020-10-02 | 中国银行股份有限公司 | 一种软件包版本核验方法及相关装置 |
CN113282893A (zh) * | 2021-04-27 | 2021-08-20 | 南方电网数字电网研究院有限公司 | 源代码加固方法、装置、计算机设备和存储介质 |
CN115484178A (zh) * | 2022-08-04 | 2022-12-16 | 中银金融科技有限公司 | 服务一致性变更方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480068A (zh) * | 2017-08-22 | 2017-12-15 | 武汉斗鱼网络科技有限公司 | 代码完整性检测方法、装置、电子终端及可读存储介质 |
CN108389124A (zh) * | 2018-02-26 | 2018-08-10 | 平安普惠企业管理有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN109784058A (zh) * | 2019-01-07 | 2019-05-21 | 中国银行股份有限公司 | 版本强一致性校验方法、客户端、服务器及存储介质 |
CN110135131A (zh) * | 2019-05-13 | 2019-08-16 | 北京智游网安科技有限公司 | 一种应用程序的加密方法、存储介质及终端设备 |
-
2020
- 2020-01-14 CN CN202010039332.6A patent/CN111209029A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480068A (zh) * | 2017-08-22 | 2017-12-15 | 武汉斗鱼网络科技有限公司 | 代码完整性检测方法、装置、电子终端及可读存储介质 |
CN108389124A (zh) * | 2018-02-26 | 2018-08-10 | 平安普惠企业管理有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN109784058A (zh) * | 2019-01-07 | 2019-05-21 | 中国银行股份有限公司 | 版本强一致性校验方法、客户端、服务器及存储介质 |
CN110135131A (zh) * | 2019-05-13 | 2019-08-16 | 北京智游网安科技有限公司 | 一种应用程序的加密方法、存储介质及终端设备 |
Non-Patent Citations (1)
Title |
---|
孙聪 等: "软件逆向工程原理与实践", 西安电子科技大学出版社, pages: 115 - 118 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111736893A (zh) * | 2020-06-24 | 2020-10-02 | 中国银行股份有限公司 | 一种软件包版本核验方法及相关装置 |
CN113282893A (zh) * | 2021-04-27 | 2021-08-20 | 南方电网数字电网研究院有限公司 | 源代码加固方法、装置、计算机设备和存储介质 |
CN115484178A (zh) * | 2022-08-04 | 2022-12-16 | 中银金融科技有限公司 | 服务一致性变更方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101497742B1 (ko) | 인증, 데이터 전송 및 피싱에 대한 보호를 위한 방법 및 시스템 | |
US7673135B2 (en) | Request authentication token | |
US9398047B2 (en) | Methods and systems for phishing detection | |
RU2637477C1 (ru) | Система и способ обнаружения фишинговых веб-страниц | |
US8539224B2 (en) | Obscuring form data through obfuscation | |
US9544329B2 (en) | Client/server security by an intermediary executing instructions received from a server and rendering client application instructions | |
US8528079B2 (en) | System and method for combating phishing | |
JP4625246B2 (ja) | クロスサイトスクリプティング脆弱性の自動検出 | |
US8533328B2 (en) | Method and system of determining vulnerability of web application | |
US11496512B2 (en) | Detecting realtime phishing from a phished client or at a security server | |
CN111209029A (zh) | 一种代码修改确定方法、装置、电子设备及存储介质 | |
CN111163095B (zh) | 网络攻击分析方法、网络攻击分析装置、计算设备和介质 | |
US9973525B1 (en) | Systems and methods for determining the risk of information leaks from cloud-based services | |
CN111163094B (zh) | 网络攻击检测方法、网络攻击检测装置、电子设备和介质 | |
CN113645234B (zh) | 基于蜜罐的网络防御方法、系统、介质及装置 | |
CN107547524A (zh) | 一种网页检测方法、装置和设备 | |
US11082437B2 (en) | Network resources attack detection | |
CN115248919A (zh) | 一种函数接口的调用方法、装置、电子设备及存储介质 | |
US9398041B2 (en) | Identifying stored vulnerabilities in a web service | |
CN110177096B (zh) | 客户端认证方法、装置、介质和计算设备 | |
KR102032958B1 (ko) | 취약점 점검 장치, 방법 및 시스템 | |
US11429688B2 (en) | Correcting a URL within a REST API call | |
US20160378982A1 (en) | Local environment protection method and protection system of terminal responding to malicious code in link information | |
US20230177166A1 (en) | Security Vulnerability Detection | |
CN110347941B (zh) | 用于标识网页数据片段的未知属性的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |