一种提高设备ID安全性的方法、客户端和服务器
技术领域
本发明涉及计算机技术领域,尤其涉及一种提高设备ID安全性的方法、客户端和服务器。
背景技术
在相关技术中,服务器基于客户端的设备ID(身份标识,IDentity)辨识并验证各个客户端。举例来说,通过设备ID验证用户身份的合法性,以设备ID数量统计应用程序安装量,或者以设备ID过滤重复参与抽奖的用户等。设备ID为客户端根据一定算法得到的字符串。
然而,本申请发明人在实现本申请实施例中发明技术方案的过程中,发现上述技术至少存在如下技术问题:不法分子破译生成设备ID的算法,生成伪设备ID,且服务器又无法识别出伪设备ID,导致基于设备ID导出的各种结果不准确。所以,现有技术存在如何提高设备ID安全性的技术问题。
发明内容
本发明实施例提供了一种提高设备ID安全性的方法、客户端和服务器,用于提高设备ID的安全性。
第一方面,本发明提供了一种提高设备ID安全性的方法,应用于客户端,所述方法包括:
接收服务器生成并发送的第一设备ID;
获取所述客户端的客户端信息;
按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID;
对所述第二设备ID进行哈希计算,获得第一哈希值;
按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID;
存储加密的所述第二设备ID和所述第一哈希值;
当服务器需要验证所述客户端时,获取加密的所述第二设备ID和所述第一哈希值;
向所述服务器发送加密的所述第二设备ID和所述第一哈希值,以使所述服务器按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID,按照所述预设生成方式基于所述第二设备ID解析出所述客户端信息,对所述第二设备ID进行哈希计算,获得第二哈希值,判断所述第一哈希值与所述第二哈希值是否相同,如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端,如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法,如果所述客户端信息不合法,不验证通过所述客户端。
可选的,存储加密的所述第二设备ID和所述第一哈希值,包括:
将加密的所述第二设备ID存储为第一小型文字档案cookie;
将第一哈希值存储为第二cookie;
在局部存储器LocalStorage中存储加密的所述第二设备ID和所述第一哈希值。
可选的,在获取加密的所述第二设备ID和所述第一哈希值之前,所述方法还包括:
判断所述第一cookie和所述第二cookie是否存在;
如果所述第一cookie和所述第二cookie存在,获取加密的所述第二设备ID和所述第一哈希值,具体为:读取所述第一cookie中的加密的所述第二设备ID,以及读取所述第二cookie中的所述第一哈希值;
如果所述第一cookie和/或所述第二cookie不存在,获取加密的所述第二设备ID和所述第一哈希值,具体为:从所述LocalStorage中读取加密的所述第二设备ID和所述第一哈希值。
可选的,所述客户端信息包括所述客户端的操作系统类型和中央处理器CPU架构,按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID,包括:
获得所述操作系统类型对应的第一字符串和所述CPU架构对应的第二字符串;
按照预设顺序拼接所述第一设备ID、所述第一字符串和所述第二字符串;
将拼接形成的第三字符串作为所述第二设备ID。
第二方面,本发明提供了一种提高设备ID安全性的方法,应用于服务器,所述方法包括:
生成并向一客户端发送第一设备ID,以使所述客户端获取所述客户端的客户端信息,按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID,对所述第二设备ID进行哈希计算,获得第一哈希值,按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID,存储加密的所述第二设备ID和所述第一哈希值,并当服务器需要验证所述客户端时,获得加密的所述第二设备ID和所述第一哈希值;
接收所述客户端发送的加密的所述第二设备ID和第一哈希值;
按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID;
按照所述预设生成方式解析所述第二设备ID,获得所述客户端信息;
对所述第二设备ID进行哈希计算,获得第二哈希值;
判断所述第一哈希值与所述第二哈希值是否相同;
如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端;
如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法;
如果所述客户端信息不合法,不验证通过所述客户端。
可选的,所述客户端信息包括所述客户端的操作系统类型和中央处理器CPU架构,按照所述预设生成方式解析所述第二设备ID,获得所述客户端信息,包括:
将所述第二设备ID作为第三字符串;
按照预设顺序将所述第三字符串拆分为与第一设备ID、所述操作系统类型对应的第一字符串和所述CPU架构对应的第二字符串;
获得与所述第一字符串对应的所述操作系统类型和与所述第二字符串对应的所述CPU架构。
第三方面,本发明提供了一种客户端,包括:
接收模块,用于接收服务器生成并发送的第一设备ID;
第一获取模块,用于获取所述客户端的客户端信息;
生成模块,用于按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID;
计算模块,用于对所述第二设备ID进行哈希计算,获得第一哈希值;
加密模块,用于按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID;
存储模块,用于存储加密的所述第二设备ID和所述第一哈希值;
第二获取模块,用于当服务器需要验证所述客户端时,获取加密的所述第二设备ID和所述第一哈希值;
发送模块,用于向所述服务器发送加密的所述第二设备ID和所述第一哈希值,以使所述服务器按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID,按照所述预设生成方式基于所述第二设备ID解析出所述客户端信息,对所述第二设备ID进行哈希计算,获得第二哈希值,判断所述第一哈希值与所述第二哈希值是否相同,如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端,如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法,如果所述客户端信息不合法,不验证通过所述客户端。
可选的,所述存储模块用于将加密的所述第二设备ID存储为第一小型文字档案cookie;将第一哈希值存储为第二cookie;在局部存储器LocalStorage中存储加密的所述第二设备ID和所述第一哈希值。
可选的,所述客户端还包括判断模块,用于在获取加密的所述第二设备ID和所述第一哈希值之前,判断所述第一cookie和所述第二cookie是否存在;如果所述第一cookie和所述第二cookie存在,所述第二获取模块具体用于读取所述第一cookie中的加密的所述第二设备ID,以及读取所述第二cookie中的所述第一哈希值;如果所述第一cookie和/或所述第二cookie不存在,所述第二获取模块具体用于从所述LocalStorage中读取加密的所述第二设备ID和所述第一哈希值。
可选的,所述客户端信息包括所述客户端的操作系统类型和中央处理器CPU架构,所述生成模块用于获得所述操作系统类型对应的第一字符串和所述CPU架构对应的第二字符串;按照预设顺序拼接所述第一设备ID、所述第一字符串和所述第二字符串;将拼接形成的第三字符串作为所述第二设备ID。
第四方面,本发明提供了一种服务器,包括:
发送模块,用于生成并向一客户端发送第一设备ID,以使所述客户端获取所述客户端的客户端信息,按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID,对所述第二设备ID进行哈希计算,获得第一哈希值,按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID,存储加密的所述第二设备ID和所述第一哈希值,并当服务器需要验证所述客户端时,获得加密的所述第二设备ID和所述第一哈希值;
接收模块,用于接收所述客户端发送的加密的所述第二设备ID和第一哈希值;
解密模块,用于按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID;
解析模块,用于按照所述预设生成方式解析所述第二设备ID,获得所述客户端信息;
计算模块,用于对所述第二设备ID进行哈希计算,获得第二哈希值;
第一判断模块,用于判断所述第一哈希值与所述第二哈希值是否相同;
第一验证模块,用于如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端;
第二判断模块,用于如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法;
第二验证模块,用于如果所述客户端信息不合法,不验证通过所述客户端。
可选的,所述客户端信息包括所述客户端的操作系统类型和中央处理器CPU架构,所述解析模块用于将所述第二设备ID作为第三字符串;按照预设顺序将所述第三字符串拆分为与第一设备ID、所述操作系统类型对应的第一字符串和所述CPU架构对应的第二字符串;获得与所述第一字符串对应的所述操作系统类型和与所述第二字符串对应的所述CPU架构。
第五方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面任一项所述方法的步骤。
第六方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第二方面任一项所述方法的步骤。
第七方面,本发明提供了一种客户端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面任一项所述方法的步骤。
第八方面,本发明提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第二方面任一项所述方法的步骤。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明实施例的技术方案中,客户端接收服务器生成并发送的第一设备ID,然后获取客户端信息,接着按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID,接着对所述第二设备ID进行哈希计算,获得第一哈希值,接着按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID,接着存储加密的所述第二设备ID和所述第一哈希值,当服务器需要验证所述客户端时,获得加密的所述第二设备ID和所述第一哈希值,并向所述服务器发送加密的所述第二设备ID和所述第一哈希值,以使所述服务器按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID,按照所述预设生成方式基于所述第二设备ID解析出所述客户端信息,对所述第二设备ID进行哈希计算,获得第二哈希值,判断所述第一哈希值与所述第二哈希值是否相同,如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端,如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法,如果所述客户端信息不合法,不验证通过所述客户端。所以,一方面,所述客户端计算并存储所述第一哈希值,并且所述服务器对比所述第一哈希值和所述第二哈希值来验证客户端,那么不法分子如果只修改了所述第二设备ID而没有修改所述第一哈希值,所述服务器也能识别出伪设备ID;另一方面,所述客户端存储的设备ID具体为基于所述第一设备ID和所述客户端信息生成的所述第二设备ID,如果不发分子同时修改了所述第二设备ID和所述第一哈希值,但对所述第二设备ID的修改可能导致其中的所述客户端信息不合法,因此即使所述第一哈希值和所述第二哈希值相同,所述服务器也能基于所述第二设备ID包含的客户端信息识别出伪设备ID。
附图说明
图1为本发明实施例中客户端侧提高设备ID安全性的方法流程图;
图2为本发明实施例中服务器侧提高设备ID安全性的方法流程图;
图3为本发明实施例中一客户端的结构示意图;
图4为本发明实施例中一服务器的结构示意图;
图5为本发明实施例中另一客户端的结构示意图;
图6为本发明实施例中另一服务器的结构示意图。
具体实施方式
本发明实施例提供了一种提高设备ID安全性的方法、客户端和服务器,用于提高设备ID的安全性。
为了解决上述技术问题,本发明提供的技术方案总体思路如下:
在本发明实施例的技术方案中,客户端接收服务器生成并发送的第一设备ID,然后获取客户端信息,接着按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID,接着对所述第二设备ID进行哈希计算,获得第一哈希值,接着按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID,接着存储加密的所述第二设备ID和所述第一哈希值,当服务器需要验证所述客户端时,获得加密的所述第二设备ID和所述第一哈希值,并向所述服务器发送加密的所述第二设备ID和所述第一哈希值,以使所述服务器按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID,按照所述预设生成方式基于所述第二设备ID解析出所述客户端信息,对所述第二设备ID进行哈希计算,获得第二哈希值,判断所述第一哈希值与所述第二哈希值是否相同,如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端,如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法,如果所述客户端信息不合法,不验证通过所述客户端。所以,一方面,所述客户端计算并存储所述第一哈希值,并且所述服务器对比所述第一哈希值和所述第二哈希值来验证客户端,那么不法分子如果只修改了所述第二设备ID而没有修改所述第一哈希值,所述服务器也能识别出伪设备ID;另一方面,所述客户端存储的设备ID具体为基于所述第一设备ID和所述客户端信息生成的所述第二设备ID,如果不发分子同时修改了所述第二设备ID和所述第一哈希值,但对所述第二设备ID的修改可能导致其中的所述客户端信息不合法,因此即使所述第一哈希值和所述第二哈希值相同,所述服务器也能基于所述第二设备ID包含的客户端信息识别出伪设备ID。
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本发明提供了一种提高设备ID安全性的方法。首先,对客户端侧的方法进行介绍。本发明实施例中客户端具体为台式机、笔记本电脑、一体机或手机等具有浏览器的电子设备,本发明不做具体限制。请参考图1,为客户端侧提高设备ID安全性的方法流程图。该方法包括:
S101:接收服务器生成并发送的第一设备ID;
S102:获取所述客户端的客户端信息;
S103:按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID;
S104:对所述第二设备ID进行哈希计算,获得第一哈希值;
S105:按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID;
S106:存储加密的所述第二设备ID和所述第一哈希值;
S107:当服务器需要验证所述客户端时,获得加密的所述第二设备ID和所述第一哈希值;
S108:向所述服务器发送加密的所述第二设备ID和所述第一哈希值。
具体来讲,在S101中,接收服务器生成并发送的第一设备ID。在本发明实施例中,服务器可以基于服务器的系统时间、随机数和计算数等生成第一设备ID。在一种实施方式中,服务器可以直接将第一设备ID的明文发送给客户端,那么,在该种实施方式中,客户端接收明文的第一设备ID,也就获得了第一设备ID。在另一种实施方式中,服务器也可以对第一设备ID进行加密,再将加密的第一设备ID和解密第一设备ID的密钥发给客户端,那么,在该种实施方式中,客户端接收加密的第一设备ID和密钥后,基于密钥对加密的第一设备ID进行解密,进而获得第一设备ID。在具体实现过程中,本发明所属领域的普通技术人员可以根据实际进行选择,本发明不做具体限制。
接下来,在S102中,客户端获取客户端信息。具体来讲,客户端信息是表示客户端不变的属性信息,包括但不限于操作系统类型、CPU(中央处理器,Central ProcessingUnit)架构、型号和MAC(媒体访问控制,Media Access Control)地址等。下面以客户端信息具体为操作系统类型和CPU架构为例来进行介绍。
通过如下代码获取操作系统类型:
os=Capabilities.os();
获取到的操作系统类型为多种已知的操作类型中的任意一种,例如Windows 7、Windows 8或Windows 10等。
通过如下代码获取CPU架构:
Cpu=Capabilities.cpuArchitecture();
获取到的CPU架构也为多种已知的架构中的任意一种,例如PowerPC、x86、SPARC(可扩充处理器架构,Scalable Processor ARChitecture)或ARM(进阶精简指令集机器,Advanced RISC Machine)。
接下来,在S103中:按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID。
具体来讲,预设生成方式例如为按照预设顺序拼接各个信息进而得到一个新的信息,按照预设算法计算各个信息进而得到一个新的信息,或者按照预设封装方式封装各个信息进而得到一个新的信息等,本发明不做具体限制。
具体来讲,还是以客户端信息具体为操作系统类型和CPU架构来介绍,在一种实施方式中,S103具体可以通过如下过程实现:
获得所述操作系统类型对应的第一字符串和所述CPU架构对应的第二字符串;
按照预设顺序拼接所述第一设备ID、所述第一字符串和所述第二字符串;
将拼接形成的第三字符串作为所述第二设备ID。
具体来讲,本发明实施例中的客户端预先建立了不同操作系统类型与字符串的对应关系,以及不同CPU架构与字符串的对应关系。举例来说,Windows 7操作系统类型对应字符串abcd、Windows 8操作系统类型对应字符串8NDU,Windows 10操作系统类型对应字符串0856,以及PowerPC架构对应W3,x86架构对应IS,SPARC架构对应BK,ARM架构对应2K等。
按照客户端实际获得的操作系统类型,对照不同操作系统类型与字符串的对应关系确定当前客户端操作系统类型对应的第一字符串。以及,按照客户端实际获得的CPU架构,对照不同CPU架构与字符串的对应关系确定当前CPU架构对应的第二字符串。
接着,按照预设顺序拼接第一设备ID、第一字符串和第二字符串,形成第三字符串。具体来讲,第一种预设顺序为:第一设备ID、第一字符串和第二字符串,即第一设备ID排序在前,第一字符串排序在中,第二字符串排序在后。第二种预设顺序为:第一设备ID、第二字符串和第一字符串,即第一设备ID排序在前,第二字符串排序在中,第一字符串排序在后。第三种预设顺序为:第一字符串、第一设备ID和第二字符串,即第一字符串排序在前,第一设备ID排序在中,第二字符串排序在后。第四种预设顺序为:第一字符串、第二字符串和第一设备ID,即第一字符串排序在前,第二字符串排序在中,第一设备ID排序在后。第五种预设顺序为:第二字符串、第一设备ID和第一字符串,即第二字符串排序在前,第一设备ID排序在中,第一字符串排序在后。第六种预设顺序为:第二字符串、第一字符串和第一设备ID,即第二字符串排序在前,第一字符串排序在中,第一设备ID排序在后。在具体实现过程中,本发明所属领域的普通技术人员可以根据实际进行选择,本发明不做具体限制。
较佳地,根据经验,不法分子最常对设备ID的首尾进行修改,因此,上述第三种预设顺序和第四种预设顺序为较佳选择。
以第三种预设顺序为例来进行举例说明。假设操作系统类型为Windows7,对应的第一字符串为abcd,CPU架构为x86,对应的第二字符串为w3,第一设备ID为2edeww098d,因此,按照第三种预设顺序拼接形成的第三字符串为abde2edeww098dw3。
最后,将第三字符串作为第二设备ID。
接下来,在S104中,对第二设备ID进行哈希计算,获得第一哈希值。
在具体实现过程中,可以选择MD4(信息摘要算法第4版,Message-DigestAlgorithm)或MD5(信息摘要算法第5版,Message-Digest Algorithm)等哈希算法对第二设备ID进行哈希计算,本发明不做具体限制。对第二设备ID进行哈希计算与现有的哈希技术类似,此处就不再详细赘述了。
接下来,在S105中:按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID。
预设加密方式可以为AES(高级加密标准,Advanced Encryption Standard)、TEA(微型加密算法,Tiny Encryption Algorithm)或DEA(数据加密算法,Data EncryptionAlgorithm)等,本发明不做具体限制。通过预设方式对第二设备ID进行加密,可以使得第二设备ID在客户端中不会以明文存在,由此提高设备ID存储安全性。
另外,在具体实现过程中,S104可以在S105之前执行,也可以在S105之后执行,还可以与S104同时实现,本发明不做具体限制。
接下来,在S106中,存储加密的第二设备和第一哈希值。在本发明实施例中,可以通过如下过程实现:
将加密的所述第二设备ID存储为第一小型文字档案cookie;
将第一哈希值存储为第二cookie;
在局部存储器LocalStorage中存储加密的所述第二设备ID和所述第一哈希值。
具体来讲,在本发明实施例中,客户端的用户通过浏览器浏览网页或观看网络直播等。由于浏览器只能将设备ID、登录信息等存储为小型文字档案cookie,因此本发明实施例中的客户端也会将加密的第二设备ID存储为第一cookie,以及将第一哈希值存储为第二cookie。
同时,由于cookie数据容易被清除,也容易被不法分子获取并修改,因此,为了防止cookie数据中的第二设备ID和第一哈希值被清除或修改,在本本发明实施例中,客户端还在局部存储器LocalStorage中也存储一份加密的第二设备和第一哈希值。
当客户端需要向服务器请求直播视频的视频流地址、参与网站抽奖或者服务器要统计客户端数量时,客户端需要主动或基于通知被动向服务器上报设备ID。因此,在S107中,客户端获取第二设备ID和第一哈希值。
在本发明实施例中,S107之前还进一步包括:
判断所述第一cookie和所述第二cookie是否存在;
如果所述第一cookie和所述第二cookie存在,获取加密的所述第二设备ID和所述第一哈希值,具体为:读取所述第一cookie中的加密的所述第二设备ID,以及读取所述第二cookie中的所述第一哈希值;
如果所述第一cookie和/或所述第二cookie不存在,获取加密的所述第二设备ID和所述第一哈希值,具体为:从所述LocalStorage中读取加密的所述第二设备ID和所述第一哈希值。
具体来讲,当需要获取加密的第二设备ID和第一哈希值时,首先判断第一cookie和第二cookie是否存在。具体来讲,客户端在存储第一cookie和第二cookie时会记录下第一cookie和第二cookie的名称,然后,在需要获取第一cookie和第二cookie内容时,则在所有cookie中按照第一cookie和第二cookie的名称进行搜索。如果搜索出与第一cookie和第二cookie名称相同的cookie,则确定第一cookie和第二cookie存在。反之,如果未搜索出与第一cookie和第二cookie名称相同的cookie,则确定第一cookie和/或第二cookie不存在。
进一步,由于浏览器可以方便地获取cookie数据,因此如果第一cookie和第二cookie均存在,则客户端仍然读取第一cookie的内容,获得加密的第二设备ID,以及读取第二cookie的内容,获得第一哈希值。
而如果第一cookie不存在,或者第二cookie不存在,或者第一cookie和第二cookie均不存,为了保证向服务器上报真实的第二设备ID,客户端将从LocalStorage中读取加密的第二设备ID和第一哈希值。
由上述描述可知,如果不法分子删除了第一cookie和第二cookie,或者用户清除了第一cookie和第二cookie,客户端仍然可以通过从LocalStorage中读取加密的第二设备ID和第一哈希值保证向服务器上报真实信息。并且,如果第一cookie和第二cookie均存在,则优先从第一cookie和第二cookie中获取加密的第二设备ID和第一哈希值,避免了浏览器从LocalStorage获取信息带来的设备资源消耗。
进一步,如果确定第一cookie和/或第二cookie不存在,客户端还将从LocalStorage中读取出的加密的第二设备ID和/或第一哈希值重新存储为cookie。具体来讲,如果是第一cookie不存在,则客户端将加密的第二设备ID重新存储为第一cookie;如果是第二cookie不存在,则客户端将第一哈希值重新存储为第二cookie;如果第一cookie和第二cookie均不存在,则客户端将加密的第二设备ID重新存储为第一cookie,以及将第一哈希值重新存储为第二cookie。
最后,在S108中,客户端将加密的第二设备ID和第一哈希值发送给服务器。其中,将第二设备ID仍然以加密状态发送给服务器,是为了避免发送过程中第二设备ID被不法分子截获并破解。
下面,对服务器侧提高设备ID安全性的方法进行介绍。请参考图2,为服务器侧提高设备ID安全性的方法流程图,该方法包括:
S201:生成并向一客户端发送第一设备ID;
S202:接收所述客户端发送的加密的所述第二设备ID和第一哈希值;
S203:按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID;
S204:按照所述预设生成方式解析所述第二设备ID,获得所述客户端信息;
S205:对所述第二设备ID进行哈希计算,获得第二哈希值;
S206:判断所述第一哈希值与所述第二哈希值是否相同;
S207:如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端;
S208:如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法;
S209:如果所述客户端信息不合法,不验证通过所述客户端。
具体来讲,在S201中服务器为每个客户端生成第一设备ID,并向每个客户端发送不同的第一设备ID。
客户端会主动上报第二设备ID和第一哈希值,或者根据服务器的通知被动上报第二设备ID和第一哈希值,进而服务器在S202中将接收到客户端上报的加密的第二设备ID和第一哈希值。
然后,在S203中,服务器按照预设加密方式对应的预设解密方式解密出第二设备ID。具体来讲,预设解密方式是与预设加密方式对应的。客户端使用的预设加密方式由服务器指定,或者由管理人员预先设置。举例来说,如果客户端按照AES方式加密,则服务器也按照AES方式解密,如果客户端按照TEA方式加密,则服务器也按照TEA方式解密。
解密出第二设备ID后,在S204中,服务器按照预设生成方式解析第二设备ID。具体来讲,如果预设生成方式为按照预设顺序拼接各个信息进而得到一个新的信息,那么服务器则按照预设顺序将该新的信息拆分还原成各个信息,如果按照预设算法计算各个信息进而得到一个新的信息,那么服务器则按照预设算法的逆向相反计算还原出各个信息,或者按照预设封装方式封装各个信息进而得到一个新的信息,那么服务器则按照预设封装方式解封装该新的信息,从而还原各个信息,本发明不做具体限制。
还是沿用上文中的例子来说,客户端信息具体为操作系统类型和CPU架构,在一种实施方式中,S204具体可以通过如下过程实现:
将所述第二设备ID作为第三字符串;
按照预设顺序将所述第三字符串拆分为与第一设备ID、所述操作系统类型对应的第一字符串和所述CPU架构对应的第二字符串;
获得与所述第一字符串对应的所述操作系统类型和与所述第二字符串对应的所述CPU架构。
具体来讲,首先,将第二设备ID作为第三字符串。然后,按照预设顺序拆分第三字符串,进而获得第一设备ID、第一字符串和第二字符串。接着,按照不同操作系统类型与字符串的对应关系,以及不同CPU架构与字符串的对应关系确定操作系统类型与CPU架构。
为了清楚说明,下面列举两个例子来进行说明。
例1:以上文第三种预设顺序为例来进行举例说明。假设服务器解析出的第二设备ID为abde2edeww098dw3。按照第三种预设顺序“第一字符串、第一设备ID和第二字符串”,将第三字符串abde2edeww098dw3拆分成“abde”、“2edeww098d”和“w3”。其中,“abde”为第一字符串,“2edeww098d”为第一设备ID,“w3”为第二字符串。进一步查询不同操作系统类型对应的字符,确定“abde”对应的操作系统为Windows 7,故确定客户端的操作系统类型为Windows 7。查询不同CPU架构对应的字符,“w3”对应的CPU架构为x86,故确定客户端的CPU架构为x86。
例2:也以上文第三种预设顺序为例来进行举例说明。假设不法分子非法将第二设备ID abde2edeww098dw3中最后一个字符修改为4,因此服务器解析出的第二设备ID为abde2edeww098dw4。按照第三种预设顺序“第一字符串、第一设备ID和第二字符串”,将第三字符串abde2edeww098dw3拆分成“abde”、“2edeww098d”和“w4”。其中,“abde”为第一字符串,“2edeww098d”为第一设备ID,“w4”为第二字符串。进一步查询不同操作系统类型对应的字符,确定“abde”对应的操作系统为Windows 7,故确定客户端的操作系统类型为Windows7。查询不同CPU架构对应的字符,“w4”不对应任何CPU架构,故确定客户端的CPU架构为空NULL。
另外,在S205中,服务器也对第二设备ID进行哈希计算,获得第二哈希值。具体地,服务器所采用的哈希算法与客户端计算第一哈希值所采用的哈希算法一致。
在具体实现过程中,S204和S205的执行顺序可以为S204在前S205在后,也可以S205在前S204在后,或者S204和S205同时执行,本发明不做具体限制。
接下来,在S206中,服务器判断客户端发送的第一哈希值与服务器计算出的第二哈希值是否相同。由于客户端发送的第一哈希值是由第二设备ID计算得到的,而第二设备ID又是基于服务器下发的合法的第一设备ID和客户端信息获得的,因此,在正常情况下,服务器按照相同的哈希算法应得到与第一哈希值一致的第二哈希值。
所以,如果第一哈希值与第二哈希值不同,则表示客户端中的第二设备ID被非法修改过,进而表示客户端可能不合法,因此在S207中,服务器将该第二设备ID识别为伪ID,不验证通过客户端。
而如果第一哈希值与第二哈希值相同,考虑到存在不法分子同时修改第二设备ID和第一哈希值的可能,本发明实施例中服务器并不会就此验证通过客户端。在S208中,服务器还将进一步判断该客户端的客户端信息是否合法。
具体来讲,服务器判断基于第二设备ID得到的客户端信息是否正常,如果客户端信息正常则客户端信息合法,反之,如果客户端信息异常则表示客户端信息不合法。
以上文中的例1和例2来进行举例说明。服务器读取例1中获得的操作系统类型Windows 7和CPU架构x86,由于具体实现过程中客户端的操作系统类型为Windows 7以及CPU架构为x86为正常情况,故而确定该客户端的客户端信息合法。
服务器读取例2中获得的操作系统类型Windows 7和CPU架构NULL,由于具体实现过程中客户端系统CPU架构为一种已知的CPU,而CPU架构为NULL表示第二字符串没有对应的已知CPU架构,进而表示第二设备ID中CPU对应的第二字符串被非法修改过,因此服务器确定该客户端的客户端信息不合法。
进一步,如果客户端信息不合法,表示客户端的第二设备ID被非法修改过,客户端不合法,因此在S209中,服务器将该第二设备ID识别为伪ID,不验证通过客户端。而如果客户端发送的第一哈希值与服务器计算的第二哈希值相同,并且客户端信息合法,本发明实施例中的服务器才会识别第二设备ID为合法ID,进而验证通过客户端。
由上述描述可以看出,一方面,客户端计算并存储第一哈希值,并且服务器对比第一哈希值和第二哈希值来验证客户端,那么不法分子如果只修改了第二设备ID而没有修改第一哈希值,服务器也能识别出伪设备ID;另一方面,客户端存储的设备ID具体为基于第一设备ID和客户端信息生成的第二设备ID,如果不发分子同时修改了第二设备ID和第一哈希值,但对第二设备ID的修改可能导致其中的客户端信息不合法,因此即使第一哈希值和第二哈希值相同,服务器也能基于第二设备ID包含的客户端信息识别出伪设备ID。
基于与前述实施例中客户端侧提高设备ID安全性的方法同样的发明构思,本发明还提供一种客户端,如图3所示,包括:
接收模块101,用于接收服务器生成并发送的第一设备ID;
第一获取模块102,用于获取所述客户端的客户端信息;
生成模块103,用于按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID;
计算模块104,用于对所述第二设备ID进行哈希计算,获得第一哈希值;
加密模块105,用于按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID;
存储模块106,用于存储加密的所述第二设备ID和所述第一哈希值;
第二获取模块107,用于当服务器需要验证所述客户端时,获取加密的所述第二设备ID和所述第一哈希值;
发送模块108,用于向所述服务器发送加密的所述第二设备ID和所述第一哈希值,以使所述服务器按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID,按照所述预设生成方式基于所述第二设备ID解析出所述客户端信息,对所述第二设备ID进行哈希计算,获得第二哈希值,判断所述第一哈希值与所述第二哈希值是否相同,如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端,如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法,如果所述客户端信息不合法,不验证通过所述客户端。
可选的,存储模块106用于将加密的所述第二设备ID存储为第一小型文字档案cookie;将第一哈希值存储为第二cookie;在局部存储器LocalStorage中存储加密的所述第二设备ID和所述第一哈希值。
可选的,所述客户端还包括判断模块,用于在获取加密的所述第二设备ID和所述第一哈希值之前,判断所述第一cookie和所述第二cookie是否存在;如果所述第一cookie和所述第二cookie存在,第二获取模块107具体用于读取所述第一cookie中的加密的所述第二设备ID,以及读取所述第二cookie中的所述第一哈希值;如果所述第一cookie和/或所述第二cookie不存在,第二获取模块107具体用于从所述LocalStorage中读取加密的所述第二设备ID和所述第一哈希值。
可选的,所述客户端信息包括所述客户端的操作系统类型和中央处理器CPU架构,生成模块103用于获得所述操作系统类型对应的第一字符串和所述CPU架构对应的第二字符串;按照预设顺序拼接所述第一设备ID、所述第一字符串和所述第二字符串;将拼接形成的第三字符串作为所述第二设备ID。
前述图1-图2实施例中的提高设备ID安全性的方法的各种变化方式和具体实例同样适用于本实施例的客户端,通过前述对提高设备ID安全性的方法的详细描述,本领域技术人员可以清楚的知道本实施例中客户端的实施方法,所以为了说明书的简洁,在此不再详述。
基于与前述实施例中服务器侧提高设备ID安全性的方法同样的发明构思,本发明还提供一种服务器,如图4所示,包括:
发送模块201,用于生成并向一客户端发送第一设备ID,以使所述客户端获取所述客户端的客户端信息,按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID,对所述第二设备ID进行哈希计算,获得第一哈希值,按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID,存储加密的所述第二设备ID和所述第一哈希值,并当服务器需要验证所述客户端时,获得加密的所述第二设备ID和所述第一哈希值;
接收模块202,用于接收所述客户端发送的加密的所述第二设备ID和第一哈希值;
解密模块203,用于按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID;
解析模块204,用于按照所述预设生成方式解析所述第二设备ID,获得所述客户端信息;
计算模块205,用于对所述第二设备ID进行哈希计算,获得第二哈希值;
第一判断模块206,用于判断所述第一哈希值与所述第二哈希值是否相同;
第一验证模块207,用于如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端;
第二判断模块208,用于如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法;
第二验证模块209,用于如果所述客户端信息不合法,不验证通过所述客户端。
可选的,所述客户端信息包括所述客户端的操作系统类型和中央处理器CPU架构,解析模块204用于将所述第二设备ID作为第三字符串;按照预设顺序将所述第三字符串拆分为与第一设备ID、所述操作系统类型对应的第一字符串和所述CPU架构对应的第二字符串;获得与所述第一字符串对应的所述操作系统类型和与所述第二字符串对应的所述CPU架构。
前述图1-图2实施例中的提高设备ID安全性的方法的各种变化方式和具体实例同样适用于本实施例的服务器,通过前述对提高设备ID安全性的方法的详细描述,本领域技术人员可以清楚的知道本实施例中服务器的实施方法,所以为了说明书的简洁,在此不再详述。
基于与前述实施例中客户端侧提高设备ID安全性的方法同样的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述客户端侧提高设备ID安全性的任一方法的步骤。
基于与前述实施例中服务器侧提高设备ID安全性的方法同样的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述服务器侧提高设备ID安全性的任一方法的步骤。
基于与前述实施例中客户端侧提高设备ID安全性的方法同样的发明构思,本发明还提供一种客户端,如图5所示,包括存储器304、处理器302及存储在存储器304上并可在处理器302上运行的计算机程序,所述处理器302执行所述程序时实现前文所述主播端设备显示虚拟礼物特效的方法的任一方法的步骤。
其中,在图5中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口306在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。
处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。
基于与前述实施例中服务器侧提高设备ID安全性的方法同样的发明构思,本发明还提供一种服务器,如图6所示,包括存储器404、处理器402及存储在存储器404上并可在处理器上运行的计算机程序,所述处理器402执行所述程序时实现前文所述服务器侧显示虚拟礼物特效的方法的任一方法的步骤。
其中,在图6中,总线架构(用总线400来代表),总线400可以包括任意数量的互联的总线和桥,总线400将包括由处理器402代表的一个或多个处理器和存储器404代表的存储器的各种电路链接在一起。总线400还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口406在总线400和接收器401和发送器403之间提供接口。接收器401和发送器403可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。
处理器402负责管理总线400和通常的处理,而存储器404可以被用于存储处理器402在执行操作时所使用的数据。
前述图1-图2实施例中的提高设备ID安全性的方法的各种变化方式和具体实例同样适用于本实施例的客户端和服务器,通过前述对提高设备ID安全性的方法的详细描述,本领域技术人员可以清楚的知道本实施例中客户端和服务器的实施方法,所以为了说明书的简洁,在此不再详述。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明实施例的技术方案中,客户端接收服务器生成并发送的第一设备ID,然后获取客户端信息,接着按照预设生成方式基于所述第一设备ID和所述客户端信息,生成第二设备ID,接着对所述第二设备ID进行哈希计算,获得第一哈希值,接着按照预设加密方式对所述第二设备ID进行加密,获得加密的所述第二设备ID,接着存储加密的所述第二设备ID和所述第一哈希值,当服务器需要验证所述客户端时,获得加密的所述第二设备ID和所述第一哈希值,并向所述服务器发送加密的所述第二设备ID和所述第一哈希值,以使所述服务器按照与所述预设加密方式对应的预设解密方式对加密的所述第二设备ID进行解密,获得所述第二设备ID,按照所述预设生成方式基于所述第二设备ID解析出所述客户端信息,对所述第二设备ID进行哈希计算,获得第二哈希值,判断所述第一哈希值与所述第二哈希值是否相同,如果所述第一哈希值与所述第二哈希值不同,不验证通过所述客户端,如果所述第一哈希值与所述第二哈希值相同,进一步判断所述客户端信息是否合法,如果所述客户端信息不合法,不验证通过所述客户端。所以,一方面,所述客户端计算并存储所述第一哈希值,并且所述服务器对比所述第一哈希值和所述第二哈希值来验证客户端,那么不法分子如果只修改了所述第二设备ID而没有修改所述第一哈希值,所述服务器也能识别出伪设备ID;另一方面,所述客户端存储的设备ID具体为基于所述第一设备ID和所述客户端信息生成的所述第二设备ID,如果不发分子同时修改了所述第二设备ID和所述第一哈希值,但对所述第二设备ID的修改可能导致其中的所述客户端信息不合法,因此即使所述第一哈希值和所述第二哈希值相同,所述服务器也能基于所述第二设备ID包含的客户端信息识别出伪设备ID。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。