掌桥专利:专业的专利平台
掌桥专利
首页

令牌生成令牌方法和装置、电子设备及存储介质

文献发布时间:2023-06-19 19:30:30


令牌生成令牌方法和装置、电子设备及存储介质

【技术领域】

本申请涉及网络安全技术,尤其涉及一种令牌生成方法和装置、电子设备及存储介质。

【背景技术】

随着互联网技术的发展,通过网络存储和提供的数据和资源越来越多,同时,由此引起的网络安全问题也日益严重。目前,网络安全威胁越来越大,各种应用都迫切需要更好的技术来确保安全。如何保护网络上存储数据和资源的安全性,显得越来越重要。

目前常见的方法,是有客户端(client端)生成令牌(token)作为临时密钥并发送给服务端(server端),其中,令牌相当于账户名和密码,用来决定是否允许本次请求和判断本次请求属于哪一个用户,它允许客户端在不提供密码或其他凭证的前提下访问网络数据和系统资源。服务端通过校验令牌是否正确,确定是否客户端访问网络数据和系统资源。

在实现本申请的过程中,本发明人通过研究发现,客户端生成令牌的代码很容易被攻击者逆向分析透彻,之后,攻击者就可以使使用自动化工具采用这些代码自动生成令牌发送给服务端,而服务端难以区分接收到的令牌是具有访问权限的用户通过客户端发送还是攻击者发送,由此导致攻击者通过该令牌访问网络数据和系统资源,或者进一步对网络数据和系统资源进行篡改或者植入病毒,可能给用户带来极大损失。

【发明内容】

本申请的多个方面提供一种令牌生成方法和装置、电子设备及存储介质,用以提高令牌的安全性。

本申请的一方面,提供一种令牌生成方法,应用于客户端,包括:

接收服务端发送的目标总代码与第一目标方案标识;其中,所述第一目标方案标识用于标识第一目标数据隐藏方案,所述第一目标数据隐藏方案为按照预设周期从数据隐藏方案存在的多个候选方案中确定的当前周期内的数据隐藏方案;所述数据隐藏方案包括:隐藏字段和所述隐藏字段对应的隐藏方式,所述隐藏字段为需要隐藏的字段;所述目标总代码中包括所述第一目标数据隐藏方案对应的子代码;

通过执行所述目标总代码,分别对参与生成令牌的字段进行赋值,并基于所述第一目标数据隐藏方案,对所述第一目标数据隐藏方案中隐藏字段对应的赋值信息采用对应的隐藏方式进行隐藏操作处理,得到隐藏处理结果;

基于所述隐藏处理结果生成令牌;

将请求内容、所述令牌与所述第一目标方案标识发送给所述服务端。

本申请的另一方面,提供另一种令牌生成方法,应用于服务端,所述方法包括:

按照预设周期调整数据隐藏方案,所述数据隐藏方案为对参与生成令牌的字段中的全部字段或部分字段进行隐藏的方案,所述数据隐藏方案存在多个候选方案;所述数据隐藏方案包括:隐藏字段和所述隐藏字段对应的隐藏方式,所述隐藏字段为需要隐藏的字段;

响应于达到预设触发条件,获取当前周期内的数据隐藏方案作为第二目标数据隐藏方案,并获取所述第二目标数据隐藏方案的方案标识作为第三目标方案标识;其中,每个方案标识用于唯一标识一个数据隐藏方案,所述第三目标方案标识用于标识所述第二目标数据隐藏方案;所述第二目标数据隐藏方案包括:第二隐藏字段和所述第二隐藏字段对应的第二隐藏方式;

在对应关系表中记录所述第三目标方案标识与所述第二目标数据隐藏方案的过期时间信息之间的对应关系;

基于所述第二目标数据隐藏方案对应的子代码更新用于生成令牌的总代码,得到当前周期内用于生成令牌的目标总代码,所述目标总代码中包括所述第二目标数据隐藏方案对应的子代码;

将所述目标总代码与所述第三目标方案标识发送给客户端,以便所述客户端通过执行所述目标总代码,生成基于所述第二目标数据隐藏方案进行隐藏操作处理后的令牌。

本申请的又一方面,提供一种令牌生成装置,应用于客户端,包括:

接收模块,用于接收服务端发送的目标总代码与第一目标方案标识;其中,所述第一目标方案标识用于标识第一目标数据隐藏方案,所述第一目标数据隐藏方案为按照预设周期从数据隐藏方案存在的多个候选方案中确定的当前周期内的数据隐藏方案;所述数据隐藏方案包括:隐藏字段和所述隐藏字段对应的隐藏方式,所述隐藏字段为需要隐藏的字段;所述目标总代码中包括所述第一目标数据隐藏方案对应的子代码;

隐藏模块,用于通过执行所述目标总代码,分别对参与生成令牌的字段进行赋值,并基于所述第一目标数据隐藏方案,对所述第一目标数据隐藏方案中隐藏字段对应的赋值信息采用对应的隐藏方式进行隐藏操作处理,得到隐藏处理结果;

生成模块,用于基于所述隐藏处理结果生成令牌;

第一发送模块,用于将请求内容、所述令牌与所述第一目标方案标识发送给所述服务端。

本申请的又一方面,提供另一种令牌生成装置,应用于服务端,包括:

调整模块,用于按照预设周期调整数据隐藏方案,所述数据隐藏方案为对参与生成令牌的字段中的全部字段或部分字段进行隐藏的方案,所述数据隐藏方案存在多个候选方案;所述数据隐藏方案包括:隐藏字段和所述隐藏字段对应的隐藏方式,所述隐藏字段为需要隐藏的字段;

获取模块,用于响应于达到预设触发条件,获取当前周期内的数据隐藏方案作为第二目标数据隐藏方案,并获取所述第二目标数据隐藏方案的方案标识作为第三目标方案标识;其中,每个方案标识用于唯一标识一个数据隐藏方案,所述第三目标方案标识用于标识所述第二目标数据隐藏方案;所述第二目标数据隐藏方案包括:第二隐藏字段和所述第二隐藏字段对应的第二隐藏方式;

记录模块,用于在对应关系表中记录所述第三目标方案标识与所述第二目标数据隐藏方案的过期时间信息之间的对应关系;

更新模块,用于基于所述第二目标数据隐藏方案对应的子代码更新用于生成令牌的总代码,得到当前周期内用于生成令牌的目标总代码,所述目标总代码中包括所述第二目标数据隐藏方案对应的子代码;

第二发送模块,用于将所述目标总代码与所述第三目标方案标识发送给客户端,以便所述客户端通过执行所述目标总代码,生成基于所述第二目标数据隐藏方案进行隐藏操作处理后的令牌。

本申请的再一方面,提供一种电子设备,所述电子设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述一方面所提供的令牌生成方法。

本申请的再一方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一方面所提供的令牌生成方法。

由上述技术方案可知,引入了对令牌中数据进行隐藏的数据隐藏方案,并且数据隐藏方案存在多个候选方案,服务端可以按照预设周期调整数据隐藏方案并由此生成目标总代码,从而确保服务端下发给客户端、用于生成令牌的总代码周期性的动态变化,这样客户端生成的令牌也周期性的动态变化,大大增加了生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。另外,由于周期性动态调整数据隐藏方案且调整后的数据隐藏方案都具有相应的过期时间,即使攻击者花费大量的时间逆向分析出某次用于生成令牌的总代码中的部分代码,这部分代码已经过期从而失效,将其整合到自动化工具中自动生成令牌已毫无任何意义,从而提高了令牌的安全性。

另外,基于本申请提供的技术方案,服务端可以将生成令牌的目标总代码与第三目标方案标识一起发送给客户端,客户端基于该目标总代码生成令牌后,可以将请求内容、生成的令牌以及接收到的第三目标方案标识一起返回服务端,这样,服务端可以基于第三目标方案标识所标识的第一目标数据隐藏方案从令牌中获取有效数据,从而提高令牌的可识别性和安全性。

另外,基于本申请提供的技术方案,可以避免攻击者使用自动化工具采用逆向分析出的代码自动生成令牌访问网络数据和系统资源、或者进一步对网络数据和系统资源进行篡改或者植入病毒,有效保障网络数据和系统资源的安全性。

【附图说明】

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本申请一实施例提供的令牌生成方法的流程示意图;

图2为本申请另一实施例提供的令牌生成方法的流程示意图;

图3为本申请又一实施例提供的令牌生成方法的流程示意图;

图4为本申请再一实施例提供的令牌生成方法的流程示意图;

图5为本申请一实施例提供的令牌生成装置的结构示意图;

图6为本申请另一实施例提供的令牌生成装置的结构示意图;

图7为本申请一实施例提供的令牌生成系统的结构示意图;

图8为可以用来实施本申请的实施例的示例电子设备的示意性框图。

【具体实施方式】

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其它实施例,都属于本申请保护的范围。

需要说明的是,本申请实施例中所涉及的终端可以包括但不限于手机、个人数字助理(Personal Digital Assistant,PDA)、无线手持设备、平板电脑(Tablet Computer)、个人电脑(Personal Computer,PC)、MP3播放器、MP4播放器、可穿戴设备(例如,智能眼镜、智能手表、智能手环等)等。

本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备、模块、对象、信息等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序,也不表示第一对象和第二对象是否必然相同或不同。

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

在相关技术中,客户端通过执行固定的代码,生成数据格式固定的令牌。这样,客户端生成令牌的代码很容易被攻击者逆向分析透彻,之后,攻击者就可以使用自动化工具采用这些代码自动生成令牌、或者破解令牌的数据格式伪造令牌发送给服务端,而服务端难以区分接收到的令牌是具有访问权限的用户通过客户端发送还是攻击者发送,由此导致攻击者通过该令牌访问网络数据和系统资源,或者进一步对网络数据和系统资源进行篡改或者植入病毒,可能给用户带来极大损失。

因此,亟需提供一种令牌生成方法和装置、电子设备及计算机可读存储介质,用以提高令牌的安全性。

本申请的设计思想在于,引入对令牌中数据进行隐藏的数据隐藏方案,并且数据隐藏方案存在多个候选方案,服务端可以按照预设周期调整数据隐藏方案并由此生成目标总代码,从而确保服务端下发给客户端、用于生成令牌的总代码周期性的动态变化,使客户端生成的令牌也周期性的动态变化,以增加生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,从而提高令牌的安全性。为各周期内的数据隐藏方案设置相应的过期时间,即使攻击者花费大量的时间逆向分析出某次用于生成令牌的总代码中的部分代码,这部分代码已经过期从而失效,将其整合到自动化工具中自动生成令牌已毫无任何意义,从而提高了令牌的安全性。

本申请实施例可应用于客户端-服务端(client-server,C/S)架构的各种电子设备。

图1为本申请一实施例提供的令牌生成方法的流程示意图。该实施例应用于服务端,如图1所示。

101,按照预设周期调整数据隐藏方案。

其中,数据隐藏方案为对参与生成令牌的字段中的全部字段或部分字段进行隐藏的方案,数据隐藏方案存在多个候选方案。每个候选方案分别具有相应的方案标识(ID),其中,每个方案标识用于唯一标识一个数据隐藏方案,可以由服务端预先分配,该方案标识例如可以是数据隐藏方案的方案名称、服务端全局唯一的数据隐藏方案的方案编号、或者同时包括方案名称和服务端全局唯一的方案编号等等,本申请实施对方案标识的具体构成不做限制。每个数据隐藏方案包括:隐藏字段和隐藏字段对应的隐藏方式,其中的隐藏字段为需要隐藏的字段,可以针对全部字段,也可以针对其中的某个或某几个字段,可以根据具体需求确定。

其中的预设周期的时长可以根据实际需求设置,并可以根据需要更新,例如可以为30秒、2分钟、1小时等。

102,响应于达到预设触发条件,获取当前周期内的数据隐藏方案作为第二目标数据隐藏方案,并获取该第二目标数据隐藏方案的方案标识作为第三目标方案标识。

其中,每个方案标识用于唯一标识一个数据隐藏方案,第三目标方案标识用于标识第二目标数据隐藏方案。第二目标数据隐藏方案包括:第二隐藏字段和第二隐藏字段对应的第二隐藏方式。

本申请实施例中,预设触发条件为服务端预先设定的用于触发生成用于生成令牌的目标总代码的条件,以用于客户端基于该目标总代码生成令牌,该预设触发条件可以根据实际需求设定。例如,在一种具体实现中,服务端可以实时、随机或者服务端闲赋时作为预设触发条件,触发生成用于生成令牌的目标总代码,执行本实施例的操作102-104,在后续客户端需要时执行操作105。又如,在另一种具体实现中,可以以一些预设用户事件作为预设触发条件,服务端可以通过客户端监听预设用户事件,例如是不是有用户操作产生的鼠标输入信号或者键盘输入信号,在客户端监听到这些用户事件时,便会触发服务端生成用于生成令牌的代码,执行本实施例的操作102-105。再如,在又一种具体实现中,服务端可以预设周期作为预设触发条件,通过定时器周期性的触发生成用于生成令牌的目标总代码,执行本实施例的操作102-104,在后续客户端需要时执行操作105;或者直接执行本实施例的操作101-105。

之后,可分别执行操作103和104。

103,在对应关系表中记录第三目标方案标识与第二目标数据隐藏方案的过期时间信息之间的对应关系。

可选地,在该对应关系中还可以包括第二目标数据隐藏方案,或者也可以通过一个单独的表格记录第二目标数据隐藏方案与第三目标方案标识之间的对应关系,本申请实施例对此不做限制。

其中,第二目标数据隐藏方案的过期时间信息可以包括起始时刻和有效时长。在一种具体实现中,可以以服务端获得第二目标数据隐藏方案的时间作为起始时刻,以所述预设周期的时长作为有效时长。在另一种具体实现中,可以以所述预设周期的开始时间作为起始时刻,以所述预设周期的时长作为有效时长。或者,也可以随机选取一个不大于所述预设周期的时长作为有效时长,有效时长的大小可以根据需要更新,例如可以为30秒、2分钟、5分钟等。

由此,服务端可以通过第三目标方案标识记录当前周期内用于生成令牌的代码生成具有何种数据隐藏的令牌。

104,基于第二目标数据隐藏方案对应的子代码更新用于生成令牌的总代码,得到当前周期内用于生成令牌的目标总代码,该目标总代码中包括第二目标数据隐藏方案对应的子代码。

由此,该目标总码与第二目标数据隐藏方案具有一一对应关系。

105,将目标总代码与第三目标方案标识发送给客户端,以便客户端通过执行该目标总代码,生成基于第二目标数据隐藏方案进行隐藏操作处理后的令牌。

在实际应用中,服务端可以在客户端需要向服务端发送业务请求的请求内容时将目标总代码与第三目标方案标识发送给客户端,也可以预先将目标总代码与第三目标方案标识发送给客户端,以便客户端在向服务端发送业务请求的请求内容之前,便可以通过执行该目标总代码生成相应的令牌。

这样,引入了对令牌中数据进行隐藏的数据隐藏方案,并且数据隐藏方案存在多个候选方案,服务端可以按照预设周期调整数据隐藏方案并由此生成目标总代码,从而确保服务端下发给客户端、用于生成令牌的总代码周期性的动态变化,这样客户端生成的令牌也周期性的动态变化,大大增加了生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。另外,由于周期性动态调整数据隐藏方案且调整后的数据隐藏方案都具有相应的过期时间,即使攻击者花费大量的时间逆向分析出某次用于生成令牌的总代码中的部分代码,这部分代码已经过期从而失效,将其整合到自动化工具中自动生成令牌已毫无任何意义,从而提高了令牌的安全性。另外,可以避免攻击者使用自动化工具采用逆向分析出的代码自动生成令牌访问网络数据和系统资源、或者进一步对网络数据和系统资源进行篡改或者植入病毒,有效保障网络数据和系统资源的安全性。

图2为本申请另一实施例提供的令牌生成方法的流程示意图,如图2所示,在图1所示实施例的基础上,还可以包括:

201,响应于接收到客户端发送的请求内容、令牌与第一目标方案标识。

其中的请求内容为客户端请求服务端处理的内容,例如,请求内容可以是网络数据访问请求、系统资源访问请求、用户个人信息的更新请求等等,本公开实施对请求内容对应的具体业务类型和具体内容不做限制。

本申请实施例中,“第一”、“第二”仅用于区别不同或可能不同的指代对象。第一目标方案标识为客户端发送给服务端的目标方案标识,可能是服务端下发给该客户端的、未被篡改的会话密钥,此时第一目标方案标识即为第三目标方案标识;另外,第一目标方案标识也可能是服务端下发后被篡改的目标方案标识,此时第一目标方案标识已与第三目标方案标识不同,可能与第三目标方案标识同时下发的目标总代码也被篡改。

202,从对应关系表中获取第一目标方案标识对应的过期时间信息。

其中,获取第一目标方案标识对应的过期时间信息,即第一目标方案标识所标识的第一目标数据隐藏方案的过期时间信息。

响应于从对应关系表中获取到第一目标方案标识对应的过期时间信息,则说明该第一目标方案标识存在,执行操作203;否则,若从对应关系表中未获取到第一目标方案标识对应的过期时间信息,可以认为第一目标方案标识不存在,相对于下发给该客户端的第三目标方案标识已被篡改,不执行本实施例的后续流程,或者进一步向客户端反馈需要进行身份认证的响应消息。

203,响应于从对应关系表中获取到第一目标方案标识对应的过期时间信息,基于第一目标方案标识对应的过期时间信息确认第一目标数据隐藏方案是否过期。

其中,第一目标方案标识对应的过期时间信息可以包括起始时刻和有效时长。在一种具体实现中,可以以服务端生成第一目标数据隐藏方案的时间作为起始时刻,以所述预设周期的时长作为有效时长。在另一种具体实现中,可以以所述预设周期的开始时间作为起始时刻,以所述预设周期的时长作为有效时长。或者,也可以随机选取一个不大于所述预设周期的时长作为有效时长,有效时长的大小可以根据需要更新,例如可以为30秒、2分钟、5分钟等。

例如,可以根据第一目标方案标识对应的过期时间信息中的起始时刻和有效时长,以服务端接收到令牌的时刻作为当前时刻,判断当前时刻距离上述起始时刻是否在上述有效时长范围内,若在上述有效时长范围内,确认第一目标数据隐藏方案未过期;否则,若不在上述有效时长范围内,确认第一目标数据隐藏方案已过期。

响应于第一目标数据隐藏方案未过期,开始执行操作204;否则,不执行操作204及其后续流程,或者进一步向客户端反馈需要进行身份认证的响应消息。

204,响应于第一目标数据隐藏方案未过期,依次对令牌进行解码、解密和校验处理,得到第一处理结果。

可选地,在其中一些实现方式中,在该操作204中,可以通过预设编码算法方案、预设加密算法方案和预设效验算法方案,依次对令牌进行解码、解密和校验处理,得到第一处理结果。其中的预设效验算法方案、预设加密算法方案和预设编码算法方案,即客户端生成令牌时采用的效验算法方案、编码算法方案和加密算法方案,目标总代码中包括该预设效验算法方案对应的子代码、预设加密算法方案对应的子代码和预设编码算法方案对应的子代码,客户端通过该预设效验算法方案对应的子代码、预设加密算法方案对应的子代码和预设编码算法方案对应的子代码,来生成基于该预设效验算法方案、预设加密算法方案和预设编码算法方案处理后的令牌。

205,根据第一目标数据隐藏方案中的第一隐藏字段和第一隐藏字段对应的第一隐藏方式,分别对第一处理结果中与第一隐藏字段对应的数据进行第一隐藏方式对应的还原操作,得到第二处理结果。

206,从第二处理结果中获取有效数据。

其中的有效数据,为各有效字段(即预设规则中令牌需要包括的字段,例如令牌版本号、令牌ID、令牌类型、令牌来源、令牌属性、client当前时间、可选数据等)的赋值,其中,令牌版本号(具体赋值)由服务端按照预设分配方式(例如随机分配、顺序分配)为本次用于生成的令牌分配的版本号,令牌版本号可以为整数、小数、浮点数,也可以为数字、字母、或者数字与字母组合成的字符串等等,该令牌版本号可以由服务端将目标总代码与第二目标方案标识发送给客户端时一起发送给客户端,也可以将该令牌版本号携带在第二目标方案标识中发送给客户端,本申请实施例对令牌版本号的分配方式和组成、以及发送给客户端的具体方式不做限制。令牌ID、令牌类型、令牌来源、令牌属性、客户端当前时间(client当前时间)、可选数据等有效字段的赋值由客户端获取并上传,根据应用的业务,可选数据可以包括用户的输入数据、鼠标移动数据、键盘输入的统计数据、环境相关数据(例如窗口大小、当前操作系统、CPU型号等),本申请实施例对此不做限制。

207,响应于从第二处理结果中获取到有效数据,对请求内容进行处理。

响应于从第二处理结果中获取到有效数据,说明第二处理结果可读且有效,执行操作207;否则,不执行操作207及其后续流程,或者进一步向客户端反馈需要进行身份认证的响应消息。

基于本实施例,服务端可以周期性调整数据隐藏方案,将生成令牌的目标总代码与第二目标方案标识一起发送给客户端,客户端基于该目标总代码生成令牌后,可以将请求内容、生成的令牌以及接收到的第一目标方案标识一起返回服务端,这样,服务端可以基于第一目标方案标识获取相应的第一目标数据隐藏方案对令牌中的数据进行还原处理,进而从令牌中获取有效数据,从而提高令牌的可识别性和安全性;并且,服务端每次下发给客户端的第二目标数据隐藏方案都具有相应的过期时间,即使攻击者花费大量的时间逆向分析出某次用于生成令牌的代码中的部分代码,这部分代码已经过期从而失效,将其整合到自动化工具中自动生成令牌已毫无任何意义,从而提高了令牌的安全性。

可选地,在其中一些实现方式中,所述隐藏方式例如可以包括但不限于以下任意一项或多项:异或、加解密、编解码、拆分、取反、移位、加法、减法等等。

通过数据隐藏方案,可以对参与生成令牌的各隐藏字段,基于各隐藏字段对应的数据隐藏方式进行隐藏操作(例如加解密、编解码、取反、异或、移位、加法、减法等)处理以隐藏各隐藏字段的具体信息(即赋值)。服务端收到客户端发送的令牌后,基于该第一目标方案标识所标识的第一目标数据隐藏方案,可以采用相应的还原操作对令牌中隐藏字段对应的数据进行还原处理,从而得到各隐藏字段的具体信息。

如下表1所示,为本申请实施例中数据隐藏方案可选的数据隐藏方式、以及各数据隐藏方式对应的隐藏操作、还原操作和适用于作为隐藏字段的适用范围(即可作为隐藏字段的数据形式)。

表1

/>

例如,在一个具体示例中,以上述插入冗余数据方案1为例,对应的数据隐藏方案的几个候选方案可以是:

数据隐藏方案1:data[0]=随机数^0x11,data[1]=随机数^0x22,data[2]=随机数^0x33,data[3]=随机数^0x44,data[4]=令牌版本号^0x55,data[5]=令牌ID^0x66,data[6]=令牌类型^0x77,data[7]=令牌来源^0x88,data[8]=令牌属性^0x99,data[9]=client当前时间^0xAA,…

还原操作:令牌版本号=data[4]^0x55,令牌ID=data[5]^0x66,令牌类型=data[6]^0x77,令牌来源=data[7]^0x88,令牌属性=data[8]^0x99,client当前时间=data[9]^0xAA,…

数据隐藏方案2:data[0]=随机数+0x11,data[1]=随机数+0x22,data[2]=随机数+0x33,data[3]=随机数+0x44,data[4]=令牌版本号+0x55,data[5]=令牌ID+0x66,data[6]=令牌类型+0x77,data[7]=令牌来源+0x88,data[8]=令牌属性+0x99,data[9]=client当前时间+0xAA,…

还原操作:令牌版本号=data[4]-0x55,令牌ID=data[5]-0x66,令牌类型=data[6]-0x77,令牌来源=data[7]-0x88,令牌属性=data[8]-0x99,client当前时间=data[9]-0xAA,…

数据隐藏方案3:data[0]=随机数^0x11,data[1]=随机数+0x22,data[2]=随机数<<1,data[3]=随机数^0xFF,data[4]=~令牌版本号,data[5]=令牌ID^0x66,data[6]=令牌类型+0x77,data[7]=令牌来源<<2,data[8]=令牌属性^0x99,data[9]=~client当前时间,…

还原操作:令牌版本号=~data[4],令牌ID=data[5]^0x66,令牌类型=data[6]-0x77,令牌来源=data[7]>>2,令牌属性=data[8]^0x99,client当前时间=~data[9],…

数据隐藏方案N:…

其中,数据隐藏方案1中,数据隐藏方式为异或(异或运算符^)。数据隐藏方案2中,数据隐藏方式为加法(加上运算符+、减去运算符-)。数据隐藏方案3中,数据隐藏方式同时包括了异或(异或运算符^)、加法(加上运算符+、减去运算符-)、移位(左移运算符<<、右移运算符>>)、取反(取反运算符~)。在实际应用中,数据隐藏方案可以单独或组合使用上述各种数据隐藏方式。

图3为本申请又一实施例提供的令牌生成方法的流程示意图。该实施例应用于服务端,如图3所示。

301,按照预设周期调整数据隐藏方案和数据结构方案。

其中,数据结构方案用于确定令牌的数据结构,数据结构方案包括以下任意一项或多项:数据存储位置方案、插入冗余数据方案。

其中,数据存储位置方案用于确定参与生成令牌的字段中的有效字段在令牌的数据结构中的位置,其中,参与生成令牌的有效字段例如可以包括但不限于:令牌版本号、令牌标识、令牌类型、令牌来源、令牌属性、客户端当前时间、至少一个预设可选数据等等。数据存储位置方案存在多个候选方案,每个候选方案分别具有相应的方案标识,该方案标识可以由服务端预先分配,该方案标识例如可以是数据存储位置方案的方案名称、服务端全局唯一的数据存储位置方案的方案编号、或者同时包括方案名称和服务端全局唯一的方案编号等等,本申请实施对方案标识的具体构成不做限制。在不同数据存储位置方案中,参与生成令牌的字段在令牌的数据结构中的位置不同或不完全相同,甚至同一个字段在令牌的数据结构中的位置都不同。

服务端接收到客户端发送的请求内容、令牌、第二目标方案标识后,基于该第二目标方案标识中的目标数据存储位置方案的方案标识所标识的目标数据存储位置方案,可以确定各有效字段在令牌的数据结构中的位置,从而从相应的位置提取各有效字段的具体信息(即赋值)。

例如,在一个具体示例中,以参与生成令牌的有效字段包括令牌版本号、令牌ID、令牌类型、令牌来源、令牌属性、client当前时间、…为例,在如下不同数据存储位置方案中,各字段在令牌的数据结构中的位置如下:

数据存储位置方案1:data[0]=令牌版本号,data[1]=令牌ID,data[2]=令牌类型,data[3]=令牌来源,data[4]=令牌属性,data[5]=client当前时间,…;

数据存储位置方案2:data[0]=令牌ID,data[1]=令牌版本号,data[2]=令牌类型,data[3]=client当前时间,data[4]=令牌属性,data[5]=令牌来源,…;

数据存储位置方案3:data[0]=client当前时间,data[1]=令牌来源,data[2]=令牌ID,data[3]=令牌类型,data[4]=令牌属性,data[5]=令牌版本号,…;

数据存储位置方案N:…

其中,data[]表示各字段在令牌的数据结构中的第几个位置,例如data[0]=令牌版本号,表示字段“令牌版本号”在令牌的数据结构中的第0个位置,data[1]=令牌ID表示字段“令牌ID”在令牌的数据结构中的第1个位置,…,以此类推。根据应用的业务,可选数据可以包括用户的输入数据、鼠标移动数据、键盘输入的统计数据、环境相关数据(例如窗口大小、当前操作系统、CPU型号等)。

其中,插入冗余数据方案为向令牌的数据结构中插入冗余数据的方案,该插入冗余数据方案存在多个候选方案,每个候选方案分别具有相应的方案标识,该方案标识可以由服务端预先分配,该方案标识例如可以是插入冗余数据方案的方案名称、服务端全局唯一的插入冗余数据方案的方案编号、或者同时包括方案名称和服务端全局唯一的方案编号等等,本申请实施对方案标识的具体构成不做限制。每个插入冗余数据方案包括:插入的无效字段的数量、各无效字段在令牌的数据结构中的位置、以及赋值给各无效字段的冗余数据。根据插入冗余数据方案,可以向参与生成令牌的字段中的不同位置(例如向令牌的数据结构中的第几个位置之前或之后)插入不同数量的无效字段的冗余数据。

为便于区分,本申请实施例中,可以将参与生成令牌的字段可以分为有效字段和无效字段,其中的有效字段为预设规则中令牌需要包括的字段,例如令牌版本号、令牌ID、令牌类型、令牌来源、令牌属性、client当前时间、以及一些可选数据,这些有效字段的具体信息(即赋值)可以称为有效数据;无效字段为除了基于上述预设规则规定的有效字段外,基于本申请实施中插入的、用于增加生成令牌的代码被攻击者逆向分析的难度、提高令牌的安全性的字段,这些无效字段的具体信息(即赋值)可以称为冗余数据(即无效数据)。

例如,在一个具体示例中,可以提供如下插入冗余数据方案作为候选方案:

插入冗余数据方案1:data[0]=随机数,data[1]=随机数,data[2]=随机数,data[3]=随机数,data[4]=令牌版本号,data[5]=令牌ID,data[6]=令牌类型,data[7]=令牌来源,data[8]=令牌属性,data[9]=client当前时间,…;

插入冗余数据方案2:data[0]=令牌ID,data[1]=令牌版本号,data[2]=令牌类型,data[3]=client当前时间,data[4]=令牌属性,data[5]=令牌来源,data[6]=随机数,data[7]=随机数,data[8]=随机数,…;

插入冗余数据方案3:data[0]=client当前时间,data[1]=随机数,data[2]=令牌来源,data[3]=随机数,data[4]=令牌ID,data[5]=令牌类型,data[6]=随机数,data[7]=令牌属性,data[8]=令牌版本号,…;

插入冗余数据方案N:…

其中的随机数可以由服务端根据预设规则选取,例如可以选取一个大于0且小于255的整数作为随机数,其中不同位置的随机数可以部分或全部相同,也可以不同。

其中的随机数可以由服务端根据预设规则设置,例如可以设置为大于0且小于255的一个整数。

服务端接收到客户端发送的请求内容、令牌、第二目标方案标识后,基于该第二目标方案标识中目标数据存储位置方案的方案标识和目标插入冗余数据方案的方案标识所标识目标数据存储位置方案和目标插入冗余数据方案,可以确定各有效字段在令牌的数据结构中的具体位置,仅从令牌中的相应位置提取有效数据(即除冗余数据外其他各有效字段的具体信息或赋值);另外,还可以通过比较该目标插入冗余数据方案中各位置的冗余数据与客户端返回的令牌中对应位置的冗余数据是否一致,来检测发送给客户端的总代码是否被篡改,或者,基于上述预设规则设置,若在令牌中各无效字段位置处的数值为0或255时,可以直接确定发送给客户端的总代码被篡改。

可选地,在其中一些实现方式中,每个数据隐藏方案针对的隐藏字段的数量可以与有效字段和无效字段的总数量一致或不一致,本申请实施例对此不做限制。例如,在具体实现中,在数据隐藏方案针对参与生成令牌的预设某些字段时,若隐藏字段的数量大于有效字段和无效字段的总数量,可以仅针对隐藏字段涉及的有效字段和无效字段进行隐藏处理;若隐藏字段的数量小于有效字段和无效字段的总数量时,可以仅针对有效字段和无效字段中对应的隐藏字段进行隐藏处理。

302,响应于达到预设触发条件,获取当前周期内的数据隐藏方案作为第二目标数据隐藏方案,并获取第二目标数据隐藏方案的方案标识作为第三目标方案标识;以及获取当前周期内的数据结构方案作为第二目标数据结构方案,并获取该第二目标数据结构方案的方案标识作为第四目标方案标识。

其中的第四目标方案标识用于标识第二目标数据结构方案,根据第二目标数据结构方案包括目标数据存储位置方案和/或目标插入冗余数据方案,第四目标方案标识相应包括目标数据存储位置方案的方案标识和/或目标插入冗余数据方案的方案标识。

303,在对应关系表中记录第三目标方案标识、第四目标方案标识、以及第二目标数据隐藏方案与第二目标数据结构方案的过期时间信息之间的对应关系。

304,基于第二目标数据结构方案对应的子代码和第二目标数据隐藏方案对应的子代码更新用于生成令牌的总代码,得到当前周期内用于生成令牌的目标总代码,该目标总代码中包括第二目标数据结构方案对应的子代码和第二目标数据隐藏方案对应的子代码。

根据第二目标数据结构方案包括目标数据存储位置方案和/或目标插入冗余数据方案,目标总代码中相应包括目标数据存储位置方案对应的子代码和/或目标插入冗余数据方案对应的子代码。

305,将目标总代码、第三目标方案标识与第四目标方案标识发送给客户端,以便客户端通过执行目标总代码,生成具有第二目标数据结构方案确定的数据结构、且基于第二目标数据隐藏方案进行隐藏操作处理后的令牌。

306,响应于接收到客户端发送的请求内容、令牌、第一目标方案标识与第二目标方案标识,从对应关系表中获取第二目标方案标识与第四目标方案标识对应的过期时间信息。

响应于从对应关系表中获取到第一目标方案标识与第二目标方案标识对应的过期时间信息,则说明该第一目标方案标识存在,执行操作307;否则,若从对应关系表中未获取到第一目标方案标识与第二目标方案标识对应的过期时间信息,可以认为第一目标方案标识和/或第二目标方案标识不存在,相对于下发给该客户端的第三目标方案标识和/或第四目标方案标识已被篡改,不执行本实施例的后续流程,或者进一步向客户端反馈需要进行身份认证的响应消息。

307,响应于从对应关系表中获取到第一目标方案标识与第二目标方案标识对应的过期时间信息,基于该第一目标方案标识与第二目标方案标识对应的过期时间信息确认第一目标方案标识与第二目标方案标识所标识的第一目标数据隐藏方案与第一目标数据结构方案是否过期。

响应于第一目标数据隐藏方案与第一目标数据结构方案未过期,开始执行操作308;否则,不执行操作308及其后续流程,或者进一步向客户端反馈需要进行身份认证的响应消息。

308,响应于第一目标数据隐藏方案与第一目标数据结构方案未过期,依次对令牌进行解码、解密和校验处理,得到第一处理结果。

在具体实现中,可以采用与在令牌生成过程中采用的编码算法方案、加密算法方案和效验算法方案,依次对令牌进行解码、解密和校验处理。其中,令牌生成过程中采用的编码算法方案、加密算法方案和效验算法方案,由服务端下发给客户端的目标总代码中编码算法方案对应的子代码、加密算法方案对应的子代码和效验算法方案对应的子代码体现。

309,根据第一目标数据隐藏方案中的第一隐藏字段和第一隐藏字段对应的第一隐藏方式,分别对第一处理结果中与第一隐藏字段对应的数据进行第一隐藏方式对应的还原操作,得到第二处理结果。

310,基于第一目标数据结构方案从第二处理结果中获取有效数据。

可选地,在其中一些实现方式中,可以比较该第一目标数据结构方案中目标插入冗余数据方案中各位置的冗余数据与客户端返回的令牌中对应位置的冗余数据是否一致,来检测发送给客户端的总代码是否被篡改,或者,基于上述预设规则设置,若在令牌中各无效字段位置处的数值为0或255时,可以直接确定发送给客户端的总代码被篡改。若检测发送给客户端的总代码未被篡改,基于该第一目标数据结构方案中的目标数据存储位置方案和目标插入冗余数据方案,确定各有效字段在令牌的数据结构中的具体位置,分别从第二处理结果中有效字段的位置提取有效数据(即除冗余数据外其他各有效字段的具体信息或赋值)。

311,响应于从第二处理结果中获取到有效数据,对请求内容进行处理。

基于本实施例,可以周期性调整数据结构方案和数据隐藏方案的候选方案,并获取对应的子代码来更新用于生成令牌的总代码,从而使得用于生成令牌的总代码、以及生成的令牌的数据结构方案和数据表现形式周期性的动态变化,进一步增加了生成令牌的总代码被攻击者逆向分析的难度,有效防止生成令牌的总代码被攻击者逆向分析,使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,还可以使客户端生成的令牌的数据结构和数据表现形式周期性动态变化,提高了令牌的安全性。

可选地,在其中一些实现方式中,可以预先设置数据隐藏方案的候选方案以及各候选方案对应的子代码;或者,还可以进一步对数据隐藏方案的候选方案、以及各候选方案对应的子代码进行更新。按照预设周期调整数据隐藏方案时,具体可以按照预设周期从数据隐藏方案对应的候选方案中依序或随机选取一个候选方案作为当前周期内的数据隐藏方案。

可选地,在其中一些实现方式中,可以预先设置数据存储位置方案和插入冗余数据方案的候选方案、以及各候选方案对应的子代码;或者,还可以进一步对数据存储位置方案、插入冗余数据方案和数据隐藏方案的候选方案、以及各候选方案对应的子代码进行更新。按照预设周期调整数据结构方案时,在数据结构方案包括数据存储位置方案时,可以按照预设周期从数据存储位置方案对应的候选方案中依序或随机选取一个候选方案作为当前周期内的数据存储位置方案;在数据结构方案包括插入冗余数据方案时,可以按照预设周期从插入冗余数据方案对应的候选方案中依序或随机选取一个候选方案作为当前周期内的插入冗余数据方案。

可选地,在其中一些实现方式中,在操作302中,可以获取当前周期内的数据隐藏方案作为第二目标数据隐藏;获取当前周期内的数据结构方案作为第二目标数据结构方案,包括目标数据存储位置方案和目标插入冗余数据方案;之后,可以分别从预先设置的数据存储位置方案、插入冗余数据方案和数据隐藏方案的候选方案、以及各候选方案对应的子代码子代码中,获取该目标数据存储位置方案、目标插入冗余数据方案和第二目标数据隐藏方案对应的子代码,以便在操作304中,基于第二目标数据结构方案对应的子代码(包括目标数据存储位置方案和目标插入冗余数据方案对应的子代码)和第二目标数据隐藏方案对应的子代码更新用于生成令牌的总代码。

可选地,在其中一些实现方式中,在上述任一实施例的操作105或305中,还可以将预先获取的客户端密钥发送给客户端,其中的客户端密钥用于客户端加密令牌。其中的客户端密钥可以由服务端按照预设方式生成,例如随机生成或者采用预设算法生成,本申请实施例对此不做限制。

其中的客户端密钥为固定的密钥,也可以为按照预设周期变化的密钥,或者还可以是针对每个客户端临时生成的密钥。若客户端密钥为固定的密钥,服务端统一保持该密钥即可。若客户端密钥为按照预设周期变化的密钥,则服务端可以记录各周期内的客户端密钥,从而基于当前时刻所属周期可以确定对应的客户端密钥。若客户端密钥为针对每个客户端临时生成的密钥,则服务端将预先获取的客户端密钥发送给客户端时,可以记录客户端密钥与该客户端的客户端标识(ID)之间的对应关系,从而基于该对应关系可以确定发送给该客户端的客户端密钥,其中的客户端ID用于唯一标识一个客户端。

相应地,在操作201或308中,客户端发送的令牌具体为加密的令牌。相应地,在操作204或者308之前,可以先获取对应的客户端密钥,然后利用该客户端密钥对加密的令牌进行解密,得到令牌。然后,再通过操作204或308,依次对令牌进行解码、解密和校验处理。

基于本实施例,服务端向客户端发送目标总代码与第三目标方案标识的同时发送客户端密钥,这样,客户端生成令牌后,可以直接利用该客户端密钥对令牌进行加密,有助于提高令牌的保密性和安全性。

可选地,在其中一些实现方式中,在操作104之前,可以预先基于预设数据结构方案对应的子代码、预设数据隐藏方案对应的子代码和预设算法相关方案对应的子代码生成用于生成令牌的总代码。其中的预设算法相关方案,为生成令牌时在校验、加密、编码等环节使用的、用于对数据进行如校验、加密、编码等处理所采用的相应算法方案。其中的预设算法相关方案可以包括预设效验算法方案、预设加密算法方案和预设编码算法方案,分别用于令牌生成过程中的校验环节、加密环节、编码环节。

其中的预设效验算法方案,例如可以为MD5、SHA-1、SHA-2、CRC32、CRC16、CRC8、LRC、SM3或其他校验算法。预设加密算法方案,例如可以为AES128、AES256、3DES、SM4、RC5、RC6或其他加密算法等多种候选方案。预设编码算法方案,例如可以为Base81、Base56、Base64或其他编码方案,本公开实施例对预设效验算法方案、预设加密算法方案和预设编码算法方案具体采用的算法方案不做限制。

可选地,在其中一些实现方式中,服务端预先基于预设数据结构方案对应的子代码、预设数据隐藏方案对应的子代码和预设算法相关方案对应的子代码生成用于生成令牌的总代码后,也可以按照预设周期更新该总代码中预设算法相关方案(包括预设效验算法方案、预设加密算法方案和预设编码算法方案中的任意一个或多个)及其对应的子代码,使得用于生成令牌的总代码中算法相关方案对应的子代码也周期性的发生变化,进一步增加了生成令牌的目标总代码被攻击者逆向分析的难度,有效防止生成令牌的目标总代码被攻击者逆向分析,使得攻击者无法将生成令牌的目标总代码整合到自动化工具中自动生成令牌,进一步提高了令牌的安全性。

图4为本申请再一实施例提供的令牌生成方法的流程示意图。该实施例应用于客户端,如图4所示。

401,接收服务端发送的目标总代码与第一目标方案标识。

其中,第一目标方案标识用于标识第一目标数据隐藏方案,该第一目标数据隐藏方案为服务端按照预设周期从数据隐藏方案存在的多个候选方案中确定的当前周期内的数据隐藏方案,例如可以通过上述实施例中的操作101-102确定的数据隐藏方案。该数据隐藏方案为对参与生成令牌的字段中的全部字段或部分字段进行隐藏的方案,该数据隐藏方案包括:隐藏字段和所述隐藏字段对应的隐藏方式,隐藏字段为需要隐藏的字段。目标总代码为基于第一目标数据隐藏方案对应的子代码更新用于生成令牌的总代码得到,该目标总代码中包括该第一目标数据隐藏方案对应的子代码。

402,通过执行目标总代码,分别对参与生成令牌的字段进行赋值,并基于第一目标数据隐藏方案,对第一目标数据隐藏方案中隐藏字段对应的赋值信息采用对应的隐藏方式进行隐藏操作处理,得到隐藏处理结果。

403,基于所述隐藏处理结果生成令牌。

404,将请求内容、令牌与第一目标方案标识发送给服务端。

其中的请求内容为客户端请求服务端处理的内容,例如,请求内容可以是网络数据访问请求、系统资源访问请求、用户个人信息的更新请求等等,本公开实施对请求内容对应的具体业务类型和具体内容不做限制。

客户端接收到服务端发送的目标总代码与第一目标方案标识,每次向服务端发送请求内容前都基于最近一次接收到的目标总代码生成令牌,然后将请求内容、生成的令牌与第一目标方案标识一起发送给服务端。

这样,引入了对令牌中数据进行隐藏的数据隐藏方案,并且数据隐藏方案存在多个候选方案,服务端可以按照预设周期调整数据隐藏方案并由此生成目标总代码,从而确保服务端下发给客户端、用于生成令牌的总代码周期性的动态变化,这样客户端生成的令牌也周期性的动态变化,大大增加了生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。另外,由于周期性动态调整数据隐藏方案且调整后的数据隐藏方案都具有相应的过期时间,即使攻击者花费大量的时间逆向分析出某次用于生成令牌的总代码中的部分代码,这部分代码已经过期从而失效,将其整合到自动化工具中自动生成令牌已毫无任何意义,从而提高了令牌的安全性。另外,可以避免攻击者使用自动化工具采用逆向分析出的代码自动生成令牌访问网络数据和系统资源、或者进一步对网络数据和系统资源进行篡改或者植入病毒,有效保障网络数据和系统资源的安全性。

可选地,在其中一些实现方式中,所述隐藏方式例如可以包括但不限于以下任意一项或多项:异或、加解密、编解码、拆分、取反、移位、加法、减法等等。

可选地,在其中一些实现方式中,在操作403中,具体可以依次通过执行目标总代码中效验算法方案、加密算法方案和编码算法方案对应的子代码,依次对隐藏处理结果进行校验、加密和编码,生成令牌。

可选地,在其中一些实现方式中,在操作401中,具体可以接收服务端发送的目标总代码、第一目标方案标识与第二目标方案标识,其中,第二目标方案标识用于标识第一目标数据结构方案,该第一目标数据结构方案为按照预设周期从数据结构方案存在的多个候选方案中确定的当前周期内的数据结构方案。其中的数据结构方案例如可以包括但不限于以下任意一项或多项:数据存储位置方案、插入冗余数据方案。其中,数据存储位置方案用于确定参与生成令牌的字段中的有效字段在令牌的数据结构中的位置,其中,参与生成令牌的有效字段例如可以包括但不限于:令牌版本号、令牌标识、令牌类型、令牌来源、令牌属性、客户端当前时间、至少一个预设可选数据等等。数据存储位置方案存在多个候选方案,在不同数据存储位置方案中,参与生成令牌的字段在令牌的数据结构中的位置不同或不完全相同,甚至同一个字段在令牌的数据结构中的位置都不同。其中,令牌版本号(具体赋值)可以由服务端按照预设分配方式(例如随机分配、顺序分配)为本次生成的令牌分配,令牌版本号可以为整数、小数、浮点数,也可以为数字、字母、或者数字与字母组合成的字符串等等,该令牌版本号可以在操作105中,由服务端将目标总代码与第三目标方案标识发送给客户端时一起发送给客户端,也可以将该令牌版本号携带在第三目标方案标识中发送给客户端,本申请实施例对令牌版本号的分配方式和组成不做限制。令牌ID、令牌类型、令牌来源、令牌属性、client当前时间、可选数据等有效字段的赋值具体由客户端获取并上传赋值给各有效字段,根据应用的业务,可选数据可以包括用户的输入数据、鼠标移动数据、键盘输入的统计数据、环境相关数据(例如窗口大小、当前操作系统、CPU型号等),本申请实施例对此不做限制。

插入冗余数据方案为向令牌的数据结构中插入冗余数据的方案,该插入冗余数据方案存在多个候选方案。每个插入冗余数据方案包括:插入的无效字段的数量、各无效字段在令牌的数据结构中的位置、以及赋值给各无效字段的冗余数据。根据插入冗余数据方案,可以向参与生成令牌的字段中的不同位置(例如向令牌的数据结构中的第几个位置之前或之后)插入不同数量的无效字段的冗余数据。相应地,第一目标数据结构方案包括第一目标数据结构方案对应的子代码。

相应地,在操作402中,具体可以通过执行第一目标数据结构方案对应的子代码,分别对参与生成令牌的各有效字段进行赋值;然后,通过执行第一目标数据隐藏方案对应的子代码,对第一目标数据隐藏方案中隐藏字段对应的赋值信息采用对应的隐藏方式进行隐藏操作处理,得到隐藏处理结果,进而,通过执行目标总代码中效验算法方案对应的子代码、加密算法方案对应的子代码和编码算法方案对应的子代码,依次对隐藏处理结果或者包括该隐藏结果的指定信息(全部信息或其中部分指定信息)进行校验、加密和编码,即可生成由第一目标数据结构方案确定的数据结构、且经第一目标数据隐藏方案进行隐藏处理后的令牌。

其中,关于数据结构方案及其按照预设周期调整的具体实现方式,以及数据存储位置方案、插入冗余数据方案和数据隐藏方案的具体内容和实现方式,可以参考本公开上述实施例的相关记载,不再赘述。

可选地,在其中一些实现方式中,在操作401中,具体可以接收服务端发送的目标总代码、第一目标方案标识与客户端密钥。相应地,通过操作403生成令牌之后,还可以利用该客户端密钥对该令牌进行加密,得到加密的令牌;然后,在操作404中,可以将请求内容、加密的令牌与第一目标方案标识发送给服务端。

可选地,在其中一些实现方式中,在执行本申请实施例之前,服务端与客户端之间可以采用预设方式,例如,传输层安全(Transport Layer Security,TLS)或类似方式,进行双向认证,以确保用于生成令牌的目标总代码与第二目标方案标识可以发送给合法的客户端,从而提高数据的安全性。

可选地,在其中一些实现方式中,在操作105中,可以利用预设加密算法和保密的服务端密钥(serverkey)对第三目标方案标识进行加密,得到加密的第三目标方案标识,具体将加密的第三目标方案标识发送给客户端。其中的服务端密钥可以由服务端按照预设方式生成,例如随机生成或者采用预设算法生成,本申请实施例对此不做限制。

其中的预设加密算法可以为加密强度较高的加密算法,例如AES256或加密强度不低于AES256的其他加密算法。该预设加密算法和保密的服务端密钥仅保存在服务端,不会扩散,也不会传递给客户端,以提高第二目标方案标识的保密性和安全性。

相应地,在操作201中,响应于接收到客户端发送的请求内容、令牌、以及加密的第一目标方案标识之后,可以利用预设加密算法和服务端密钥,对加密的第一目标方案标识进行解密,响应于解密得到第一目标方案标识,开始执行操作202;否则,若未解密得到第一目标方案标识,说明客户端发送的加密的第一目标方案标识并非之前服务端发送给客户端的加密的第三目标方案标识,则说明服务端发送给客户端的加密的第三目标方案标识可能被篡改或者为伪造信息,不执行操作202及其后续流程,或者进一步向客户端反馈需要进行身份认证的响应消息。

基于本实施例,客户端利用预设加密算法和保密的服务端密钥对第三目标方案标识进行加密后再将加密的第三目标方案标识与目标总代码发送给客户端,由于预设加密算法和保密的服务端密钥仅保存在服务端,只有服务端可以知晓,能够提高第三目标方案标识的保密性和安全性。

以下以一个具体应用为例,对本申请实施例令牌生成方法进行进一步说明:

S1,服务端按照预设周期调整数据隐藏方案和数据结构方案

其中,数据结构方案包括数据存储位置方案和插入冗余数据方案。数据存储位置方案、插入冗余数据方案和数据隐藏方案分别存在多个候选方案。

S2,响应于达到预设触发条件,服务端获取当前周期内的数据隐藏方案(即通过S1调整得到的当前周期内的数据隐藏方案)作为第二目标数据隐藏方案,并获取第二目标数据隐藏方案的方案标识作为第三目标方案标识;以及获取当前周期内的数据结构方案(即通过S1调整得到的当前周期内的数据结构方案)作为第二目标数据结构方案,并获取该第二目标数据结构方案的方案标识作为第四目标方案标识。

其中,第二目标数据结构方案中包括目标数据存储位置方案和目标插入冗余数据方案,相应地,第四目标方案标识包括目标数据存储位置方案的方案标识和目标插入冗余数据方案的方案标识。

S3,服务端在对应关系表中记录第三目标方案标识、第四目标方案标识、以及第二目标数据隐藏方案与第二目标数据结构方案的过期时间信息之间的对应关系。

S4,服务端基于第二目标数据结构方案中目标数据存储位置方案对应的子代码和目标插入冗余数据方案对应的子代码、以及第二目标数据隐藏方案对应的子代码更新用于生成令牌的总代码,得到当前周期内用于生成令牌的目标总代码,该目标总代码中包括目标数据存储位置方案对应的子代码、目标插入冗余数据方案对应的子代码和第二目标数据隐藏方案对应的子代码。

S5,服务端将目标总代码、第三目标方案标识与第四目标方案标识、以及预先获取的客户端密钥发送给客户端。

S6,客户端接收服务端发送的目标总代码、第一目标方案标识与第二目标方案标识、以及客户端密钥。

其中,第一目标方案标识用于标识第一目标数据隐藏方案。根据服务端发送的第三目标方案标识与第四方案标识是否被篡改,客户端接收到的第一目标方案标识与服务端发送的第三目标方案标识不同或相同、第二目标方案标识与服务端发送的第四目标方案标识不同或相同。若服务端发送的第三目标方案标识未被篡改,客户端接收到的第一目标方案标识即为服务端发送的第三目标方案标识,第一目标数据隐藏方案即为第二目标数据隐藏方案;否则,若服务端发送的第三目标方案标识被篡改,客户端接收到的第一目标方案标识便不再是服务端发送的第二目标方案标识,第一目标数据隐藏方案不同于第二目标数据隐藏方案。同样,若服务端发送的第四目标方案标识未被篡改,客户端接收到的第二目标方案标识即为服务端发送的第四目标方案标识,第一目标数据结构方案即为第二目标数据结构方案;否则,若服务端发送的第四目标方案标识被篡改,客户端接收到的第一目标方案标识便不再是服务端发送的第四目标方案标识,第一目标数据结构方案不同于第二目标数据结构方案。

S7,客户端通过执行目标总代码,分别对参与生成令牌的字段进行赋值,并基于第一目标数据隐藏方案,对第一目标数据隐藏方案中隐藏字段对应的赋值信息采用对应的隐藏方式进行隐藏操作处理,得到隐藏处理结果。

具体来说,客户端接通过执行目标总代码中目标数据存储位置方案对应的子代码,分别对参与生成令牌的各有效字段进行赋值(即向有效字段相应位置传入有效数据),然后,通过执行目标总代码中第一目标数据隐藏方案对应的子代码,分别对隐藏字段的赋值信息(例如有效数据和目标总代码中的无效数据)采用对应的数据隐藏方式进行隐藏操作处理,得到隐藏处理结果。

S8,客户端基于所述隐藏处理结果生成令牌。

具体来说,客户端通过依次执行目标总代码中效验算法方案对应的子代码、加密算法方案对应的子代码和编码算法方案对应的子代码,因此对隐藏处理结果或者包括该隐藏结果的指定信息(全部信息或其中部分指定信息)进行校验、加密和编码,从而生成令牌。

S9,客户端利用客户端密钥对令牌进行加密,得到加密的令牌。

S10,客户端将请求内容、加密的令牌、第一目标方案标识余第二目标方案标识发送给服务端。

S11,响应于接收到客户端发送的请求内容、加密的令牌与第一目标方案标识,服务端从对应关系表中获取第一目标方案标识对应的过期时间信息。

S12,响应于从对应关系表中获取到第一目标方案标识与第二目标方案标识对应的过期时间信息,服务端基于该第一目标方案标识与第二目标方案标识对应的过期时间信息确认第一目标方案标识与第二目标方案标识所标识的第一目标数据隐藏方案与第一目标数据结构方案是否过期。

否则,若未获取到第一目标方案标识对应的过期时间信息,表示第一目标方案标识和/或第二目标方案标识不存在,不执行后续流程。

S13,响应于第一目标数据隐藏方案与第一目标数据结构方案未过期,服务端利用客户端密钥对加密的令牌进行解密,得到令牌。

否则,若第一目标数据隐藏方案与第一目标数据结构方案已过期,不再进行后续流程。

S14,服务端分别基于目标总代码对应的编码算法方案、加密算法方案和效验算法方案,依次对令牌进行解码、解密和校验处理,得到处理结果。

例如,在一个实现方式中,服务端根据目标总代码对应的编码算法方案采用对应的解码算法来解码数据,根据目标总代码对应的加密算法方案采用对应的解密算法来解密数据,根据目标总代码对应的效验算法方案采用对应的效验算法来效验数据。

S15,服务端根据第一目标数据隐藏方案中的第一隐藏字段和第一隐藏字段对应的第一隐藏方式,分别对第一处理结果中与第一隐藏字段对应的数据进行第一隐藏方式对应的还原操作,得到第二处理结果,其中包括各隐藏字段的具体信息。

S16,服务端基于第一目标数据结构方案从第二处理结果中获取有效数据。

具体来说,服务端基于第一目标方案标识中目标插入冗余数据方案的方案标识所标识的目标插入冗余数据方案删除冗余数据,然后,基于第一目标方案标识中目标数据存储位置方案的方案标识所标识的目标数据存储位置方案,找到有效数据的存储位置提取有效数据。

S17,响应于获取到有效数据,服务端对请求内容进行处理。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

图5为本申请一实施例提供的令牌生成装置的结构示意图。该实施例的令牌生成装置应用于服务端,可用于实现本申请上述服务端实现的各令牌生成方法实施例。如图5所示,该实施例的令牌生成装置包括:调整模块501、获取模块502、记录模块503、更新模块504和第二发送模块505。其中:

调整模块501,用于按照预设周期调整数据隐藏方案,所述数据隐藏方案为对参与生成令牌的字段中的全部字段或部分字段进行隐藏的方案,所述数据隐藏方案存在多个候选方案;所述数据隐藏方案包括:隐藏字段和所述隐藏字段对应的隐藏方式,所述隐藏字段为需要隐藏的字段。

获取模块502,用于响应于达到预设触发条件,获取当前周期内的数据隐藏方案作为第二目标数据隐藏方案,并获取所述第二目标数据隐藏方案的方案标识作为第三目标方案标识;其中,每个方案标识用于唯一标识一个数据隐藏方案,所述第三目标方案标识用于标识所述第二目标数据隐藏方案;所述第二目标数据隐藏方案包括:第二隐藏字段和所述第二隐藏字段对应的第二隐藏方式。

记录模块503,用于在对应关系表中记录所述第三目标方案标识与所述第二目标数据隐藏方案的过期时间信息之间的对应关系。

更新模块504,用于基于所述第二目标数据隐藏方案对应的子代码更新用于生成令牌的总代码,得到当前周期内用于生成令牌的目标总代码,所述目标总代码中包括所述第二目标数据隐藏方案对应的子代码。

第二发送模块505,用于将所述目标总代码与所述第三目标方案标识发送给客户端,以便所述客户端通过执行所述目标总代码,生成基于所述第二目标数据隐藏方案进行隐藏操作处理后的令牌。

本实施例令牌生成装置中各模块的详细实现和具体实行的操作,可以参见本申请上述服务端实现的各令牌生成方法实施例,不再赘述。

图6为本申请另一实施例提供的令牌生成装置的结构示意图。该实施例的令牌生成装置应用于客户端,可用于实现本申请上述客户端实现的各令牌生成方法实施例。如图6所示,该实施例的令牌生成装置包括:如图6所示,该实施例的令牌生成装置包括:接收模块601,隐藏模块602,生成模块603和第一发送模块604。其中:

接收模块601,用于接收服务端发送的目标总代码与第一目标方案标识;其中,所述第一目标方案标识用于标识第一目标数据隐藏方案,所述第一目标数据隐藏方案为按照预设周期从数据隐藏方案存在的多个候选方案中确定的当前周期内的数据隐藏方案;所述数据隐藏方案包括:隐藏字段和所述隐藏字段对应的隐藏方式,所述隐藏字段为需要隐藏的字段;所述目标总代码中包括所述第一目标数据隐藏方案对应的子代码。

隐藏模块602,用于通过执行所述目标总代码,分别对参与生成令牌的字段进行赋值,并基于所述第一目标数据隐藏方案,对所述第一目标数据隐藏方案中隐藏字段对应的赋值信息采用对应的隐藏方式进行隐藏操作处理,得到隐藏处理结果。

生成模块603,用于基于所述隐藏处理结果生成令牌。

第一发送模块604,用于将请求内容、所述令牌与所述第一目标方案标识发送给所述服务端。

本实施例令牌生成装置中各模块的详细实现和具体实行的操作,可以参见本申请上述客户端端实现的各令牌生成方法实施例,不再赘述。

图7为本申请一实施例提供的令牌生成系统的结构示意图。该实施例的令牌生成系统可用于实现本申请上述各实施例的令牌生成方法。如图7所示,该实施例的令牌生成系统包括:服务端701和客户端702。其中:

服务端701,用于按照预设周期调整数据隐藏方案,所述数据隐藏方案为对参与生成令牌的字段中的全部字段或部分字段进行隐藏的方案,所述数据隐藏方案存在多个候选方案;所述数据隐藏方案包括:隐藏字段和所述隐藏字段对应的隐藏方式,所述隐藏字段为需要隐藏的字段;响应于达到预设触发条件,获取当前周期内的数据隐藏方案作为第二目标数据隐藏方案,并获取所述第二目标数据隐藏方案的方案标识作为第三目标方案标识;其中,每个方案标识用于唯一标识一个数据隐藏方案,所述第三目标方案标识用于标识所述第二目标数据隐藏方案;所述第二目标数据隐藏方案包括:第二隐藏字段和所述第二隐藏字段对应的第二隐藏方式;在对应关系表中记录所述第三目标方案标识与所述第二目标数据隐藏方案的过期时间信息之间的对应关系;基于所述第二目标数据隐藏方案对应的子代码更新用于生成令牌的总代码,得到当前周期内用于生成令牌的目标总代码,所述目标总代码中包括所述第二目标数据隐藏方案对应的子代码;将所述目标总代码与所述第三目标方案标识发送给客户端,以便所述客户端通过执行所述目标总代码,生成基于所述第二目标数据隐藏方案进行隐藏操作处理后的令牌。

客户端702,用于接收服务端701发送的目标总代码与第一目标方案标识;其中,所述第一目标方案标识用于标识第一目标数据隐藏方案,所述第一目标数据隐藏方案为按照预设周期从数据隐藏方案存在的多个候选方案中确定的当前周期内的数据隐藏方案;所述数据隐藏方案包括:隐藏字段和所述隐藏字段对应的隐藏方式,所述隐藏字段为需要隐藏的字段;所述目标总代码中包括所述第一目标数据隐藏方案对应的子代码;通过执行所述目标总代码,分别对参与生成令牌的字段进行赋值,并基于所述第一目标数据隐藏方案,对所述第一目标数据隐藏方案中隐藏字段对应的赋值信息采用对应的隐藏方式进行隐藏操作处理,得到隐藏处理结果;基于所述隐藏处理结果生成令牌;将请求内容、所述令牌与所述第一目标方案标识发送给服务端701。

本申请实施例中,服务端701和客户端702的具体实现,可以参考本申请上述各相应实施例令牌生成方法的装置,此处不再赘述。

另外,本申请实施例还提供了一种电子设备,所述电子设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请上述任一实施例所述的令牌生成方法。

另外,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请上述任一实施例所述的令牌生成方法。

图8示出了可以用来实施本申请的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。

电子设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如Webshell文件的检测方法。例如,在一些实施例中,Webshell文件的检测方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的Webshell文件的检测方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行Webshell文件的检测方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

相关技术
  • 类文件生成方法、装置、电子设备及存储介质
  • 无人机迁移轨迹生成方法、装置、电子设备和存储介质
  • 视频摘要生成方法、装置、存储介质和电子设备
  • 网页生成方法、装置、电子设备及计算机可读存储介质
  • 视频生成、视频播放方法、装置、电子设备及存储介质
  • 令牌生成方法、令牌验签方法、装置、设备及存储介质
  • 令牌生成方法和装置、电子设备及存储介质
技术分类

06120115936965