短信验证码防刷方法及装置转让专利

申请号 : CN202011439323.2

文献号 : CN112235321B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘强

申请人 : 深圳市房多多网络科技有限公司

摘要 :

本发明公开了一种短信验证码防刷方法及装置。方法包括:接收客户端发送的时间获取请求,响应于时间获取请求向客户端返回服务端时间;接收客户端发送的携带有手机号码及服务端时间的短信验证码模拟获取请求,响应于短信验证码模拟获取请求,根据当前时间对服务端时间进行验证,并根据验证结果向手机号码对应的客户端返回预设签名;接收客户端发送的携带有预设签名的短信验证码获取请求,响应于短信验证码获取请求,对预设签名进行校验;若校验通过,则向手机号码发送短信验证码,向客户端返回预设状态码;若校验失败,则向客户端返回预设状态码,增加了刷取短信验证码的时间成本,从而有效降低了刷取次数。

权利要求 :

1.一种短信验证码防刷方法,其特征在于,所述方法包括:接收客户端发送的时间获取请求,响应于所述时间获取请求向客户端返回服务端时间,其中,所述时间获取请求具体为客户端响应用户触发的短信验证码获取操作而发送的;

接收客户端发送的携带有手机号码及所述服务端时间的短信验证码模拟获取请求,响应于所述短信验证码模拟获取请求,根据当前时间对服务端时间进行验证,并根据验证结果向手机号码对应的客户端返回预设签名;

接收客户端发送的携带有预设签名的短信验证码获取请求,响应于所述短信验证码获取请求,对所述预设签名进行校验;

若校验通过,则向手机号码发送短信验证码,以及向客户端返回预设状态码;

若校验失败,则向客户端返回预设状态码。

2.根据权利要求1所述的方法,其特征在于,所述根据当前时间对服务端时间进行验证,并根据验证结果向手机号码对应的客户端返回预设签名包括:判断所述当前时间与所述服务端时间之间的时间间隔是否大于第一预设时长;

若小于或等于第一预设时长,则向手机号码对应的客户端返回第一签名;

若大于第一预设时长,则向手机号码对应的客户端返回第二签名。

3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:将手机号码、预设签名及签名标记关联存储至数据库;

所述响应于所述短信验证码获取请求,对所述预设签名进行校验包括:响应于所述短信验证码获取请求,根据手机号码查询数据库,得到与所述手机号码对应的第三签名;

判断预设签名与第三签名是否一致,且第三签名的签名标记是否为预设标记;

若是,则确定校验通过;

若预设签名与第三签名不一致和/或第三签名的签名标记不是预设标记,则确定校验失败。

4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:统计并判断接收到的短信验证码获取请求的请求次数是否大于或等于预设阈值;

若是,则向客户端返回图形验证码。

5.根据权利要求1或2所述的方法,其特征在于,在响应于所述时间获取请求向客户端返回服务端时间之前,所述方法还包括:获取响应上一次时间获取请求而向客户端返回的服务端时间;

判断当前时间与服务端时间之间的时间间隔是否大于第二预设时长,其中,所述第二预设时长为时间间隔阈值;

若小于或等于第二预设时长,则拒绝响应客户端发送的时间获取请求;

若大于第二预设时长,则判断第一预设时间段内接收到的时间获取请求的请求次数是否大于预设阈值;

若大于预设阈值,则在第二预设时间内拒绝响应客户端发送的时间获取请求,其中,所述第二预设时间为时间获取请求的冻结时间;

若小于或等于预设阈值,则执行响应于所述时间获取请求向客户端返回服务端时间。

6.一种短信验证码防刷方法,其特征在于,所述方法包括:响应于用户触发的短信验证码获取操作,向服务端发送时间获取请求;

接收所述服务端响应所述时间获取请求返回的服务端时间,向服务端发送携带有手机号码及所述服务端时间的短信验证码模拟获取请求,以供服务端根据当前时间对服务端时间进行验证;

接收所述服务端根据手机号码响应所述短信验证码模拟获取请求而返回的预设签名,向服务端发送携带有预设签名的短信验证码获取请求,以供服务端对所述预设签名进行校验,并返回预设状态码;

接收服务端返回的预设状态码。

7.根据权利要求6所述的方法,其特征在于,向服务端发送携带有手机号码及所述服务端时间的短信验证码模拟获取请求包括:利用预设加密算法对所述手机号码及服务端时间进行加密,向服务端发送携带有经过加密的手机号码及所述服务端时间的短信验证码模拟获取请求。

8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:接收并显示服务端在判断出接收到的短信验证码获取请求的请求次数大于或等于预设阈值而返回图形验证码。

9.一种短信验证码防刷装置,其特征在于,所述装置包括:第一接收模块,适于接收客户端发送的时间获取请求,其中,所述时间获取请求具体为客户端响应用户触发的短信验证码获取操作而发送的;

第一返回模块,适于响应于所述时间获取请求向客户端返回服务端时间;

第二接收模块,适于接收客户端发送的携带有手机号码及所述服务端时间的短信验证码模拟获取请求;

验证处理模块,适于响应于所述验证码模拟获取请求,根据当前时间对服务端时间进行验证,并根据验证结果向手机号码对应的客户端返回预设签名;

第三接收模块,适于接收客户端发送的携带有预设签名的短信验证码获取请求;

校验处理模块,适于响应于所述短信验证码获取请求,对所述预设签名进行校验;

第二返回模块,适于若校验通过,则向手机号码发送短信验证码,以及向客户端返回预设状态码;若校验失败,则向客户端返回预设状态码。

10.一种短信验证码防刷装置,其特征在于,所述装置包括:第一发送模块,适于响应于用户触发的短信验证码获取操作,向服务端发送时间获取请求;

第一接收模块,适于接收所述服务端响应所述时间获取请求返回的服务端时间;

第二发送模块,适于向服务端发送携带有手机号码及所述服务端时间的短信验证码模拟获取请求,以供服务端根据当前时间对服务端时间进行验证;

第二接收模块,适于接收所述服务端根据手机号码响应所述短信验证码模拟获取请求而返回的预设签名;

第三发送模块,适于向服务端发送携带有预设签名的短信验证码获取请求,以供服务端对所述预设签名进行校验,并返回预设状态码;

第三接收模块,适于接收服务端返回的预设状态码。

说明书 :

短信验证码防刷方法及装置

技术领域

[0001] 本发明涉及计算机技术领域,具体涉及一种短信验证码防刷方法及装置。

背景技术

[0002] 随着互联网及计算机技术的发展,很多网站和应用都会对用户通过手机短信的形式进行身份验证,以对用户的隐私和财产进行保护。但是目前的网站和应用平台对于通过短信验证用户身份的技术手段不足,导致非法用户通过刷手机短信验证码通过身体验证的现象屡屡发生,导致用户的隐私和财产安全受到极大威胁。虽然提供有防刷机制,但是非法用户会通过比较高级的手段来绕开目前常规的防刷机制,比如通过构建虚假IP、大量不重复的手机号码来批量,不间断的获取验证码,实现非法登录,直接给造成经济损失。

发明内容

[0003] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的短信验证码防刷方法及装置。
[0004] 根据本发明的一个方面,提供了一种短信验证码防刷方法,包括:
[0005] 接收客户端发送的时间获取请求,响应于时间获取请求向客户端返回服务端时间,其中,时间获取请求具体为客户端响应用户触发的短信验证码获取操作而发送的;
[0006] 接收客户端发送的携带有手机号码及服务端时间的短信验证码模拟获取请求,响应于短信验证码模拟获取请求,根据当前时间对服务端时间进行验证,并根据验证结果向手机号码对应的客户端返回预设签名;
[0007] 接收客户端发送的携带有预设签名的短信验证码获取请求,响应于短信验证码获取请求,对预设签名进行校验;
[0008] 若校验通过,则向手机号码发送短信验证码,以及向客户端返回预设状态码;
[0009] 若校验失败,则向客户端返回预设状态码。
[0010] 根据本发明的另一方面,提供了一种短信验证码防刷方法,包括:
[0011] 响应于用户触发的短信验证码获取操作,向服务端发送时间获取请求;
[0012] 接收服务端响应时间获取请求返回的服务端时间,向服务端发送携带有手机号码及服务端时间的短信验证码模拟获取请求,以供服务端根据当前时间对服务端时间进行验证;
[0013] 接收服务端根据手机号码响应短信验证码模拟获取请求而返回的预设签名,向服务端发送携带有预设签名的短信验证码获取请求,以供服务端对预设签名进行校验,并返回预设状态码;
[0014] 接收服务端返回的预设状态码。
[0015] 根据本发明的另一方面,提供了一种短信验证码防刷装置,包括:
[0016] 第一接收模块,适于接收客户端发送的时间获取请求,其中,时间获取请求具体为客户端响应用户触发的短信验证码获取操作而发送的;
[0017] 第一返回模块,适于响应于时间获取请求向客户端返回服务端时间;
[0018] 第二接收模块,适于接收客户端发送的携带有手机号码及服务端时间的短信验证码模拟获取请求;
[0019] 验证处理模块,适于响应于验证码获取请求,根据当前时间对服务端时间进行验证,并根据验证结果向手机号码对应的客户端返回预设签名;
[0020] 第三接收模块,适于接收客户端发送的携带有预设签名的短信验证码获取请求;
[0021] 校验处理模块,适于响应于短信验证码获取请求,对预设签名进行校验;
[0022] 第二返回模块,适于若校验通过,则向手机号码发送短信验证码,以及向客户端返回预设状态码;若校验失败,则向客户端返回预设状态码。
[0023] 根据本发明的另一方面,提供了一种短信验证码防刷装置,包括:一种短信验证码防刷装置,包括:
[0024] 第一发送模块,适于响应于用户触发的短信验证码获取操作,向服务端发送时间获取请求;
[0025] 第一接收模块,适于接收服务端响应时间获取请求返回的服务端时间;
[0026] 第二发送模块,适于向服务端发送携带有手机号码及服务端时间的短信验证码模拟获取请求,以供服务端根据当前时间对服务端时间进行验证;
[0027] 第二接收模块,适于接收服务端根据手机号码响应短信验证码模拟获取请求而返回的预设签名;
[0028] 第三发送模块,适于向服务端发送携带有预设签名的短信验证码获取请求,以供服务端对预设签名进行校验,并返回预设状态码;
[0029] 第三接收模块,适于接收服务端返回的预设状态码。
[0030] 根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
[0031] 存储器用于存放至少一可执行指令,可执行指令使处理器执行上述短信验证码防刷方法对应的操作。
[0032] 根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述短信验证码防刷方法对应的操作。
[0033] 根据本发明提供的方案,针对用户所执行的短信验证码获取操作,需要通过三次请求才能够实现获取短信验证码,从而增加了非法用户的时间成本,提升了其破解难度;服务端通过进行两次校验,能够准确地识别出是否存在刷取短信验证码行为,并进行相应的处理,对于刷取短信验证码行为,服务端会返回预设状态码,使非法用户认为短信验证码发送成功,而对其进行误导,从而使非法用户在认为成功的情况下,而减少了刷取短信验证码的操作。
[0034] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

[0035] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0036] 图1示出了根据本发明一个实施例的短信验证码防刷方法的信令图;
[0037] 图2示出了根据本发明另一个实施例的短信验证码防刷方法的流程示意图;
[0038] 图3示出了根据本发明另一个实施例的短信验证码防刷方法的流程示意图;
[0039] 图4示出了根据本发明一个实施例的短信验证码防刷装置的结构示意图;
[0040] 图5示出了根据本发明一个实施例的短信验证码防刷装置的结构示意图;
[0041] 图6示出了根据本发明一个实施例的计算设备的结构示意图。

具体实施方式

[0042] 下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
[0043] 图1示出了根据本发明一个实施例的短信验证码防刷方法的信令图。如图1所示,该方法包括以下步骤:
[0044] 步骤S101,客户端响应于用户触发的短信验证码获取操作,向服务端发送时间获取请求。
[0045] 本实施例提供的短信验证码防刷方法适应于需要利用短信验证码进行登录或注册的场景,当然还可以应用到其它需要利用短信验证码来验证用户身份的场景,这里不做具体限定。
[0046] 通常情况下,客户端会向用户提供手机号码输入框,用户输入其手机号码后,会向用户呈现短信验证码获取按钮,用户可以通过点击短信验证码获取按钮来获取短信验证码,用户点击短信验证码获取按钮的操作视为用户触发了短信验证码获取操作。
[0047] 现有技术通常是客户端触发短信验证码获取操作后,就向服务端发送短信验证码获取请求,服务端就向客户端返回相应的短信验证码,本实施例为了防止非法用户恶意刷取验证码,增加非法用户恶意刷短信验证码的成本,并不是在客户端请求后就直接将短信验证码返回给客户端,由客户端提供给用户,而是通过多次请求,从而增加了非法用户的时间成本。
[0048] 通常情况下,客户端的时间与服务端的时间是一致的,但是,由于客户端的时间可以人工配置,很可能出现客户端的时间与服务端的时间不一致的情况,为了有效实现短信验证码防刷,客户端响应于用户触发的短信验证码获取操作,会向服务端发送时间获取请求,以请求服务端的时间。
[0049] 步骤S102,服务端接收客户端发送的时间获取请求,响应于时间获取请求向客户端返回服务端时间。
[0050] 服务端在接收到客户端发送的时间获取请求后,根据该时间获取请求,获取到服务端的时间,然后,将服务端时间返回给客户端。
[0051] 步骤S103,客户端接收服务端响应时间获取请求返回的服务端时间,向服务端发送携带有手机号码及服务端时间的短信验证码模拟获取请求。
[0052] 为了能够获取到短信验证码,客户端在接收服务端响应时间获取请求而返回的服务端时间后,需要将服务端时间提供给服务端,为了便于服务端能够准确地返回信息,同时还将手机号码提供给服务端,而服务端为了迷惑非法用户,向客户端提供有短信验证码模拟获取接口,该接口从名称上用于迷惑非法用户,使得非法用户错误地认为所执行的操作是获取短信验证码。具体地,客户端调用短信验证码模拟获取接口向服务端发送携带有手机号码及服务端时间的短信验证码模拟获取请求。
[0053] 步骤S104,服务端接收客户端发送的携带有手机号码及服务端时间的短信验证码模拟获取请求,响应于短信验证码模拟获取请求,根据当前时间对服务端时间进行验证,并根据验证结果向手机号码对应的客户端返回预设签名。
[0054] 服务端在接收到客户端发送的携带有手机号码及服务端时间的短信验证码模拟获取请求后,根据当前时间对服务端时间进行验证,这里进行验证的目的就是为了确定用户是否存在刷短信验证码的风险,以有效抑制刷短信验证码行为,在验证结束后,服务端根据验证结果向手机号码对应的客户端返回预设签名,其中,预设签名可以是随机字符串等,每个签名都具有唯一性,从而能够在后续步骤中用于对用户进行校验。需要说明的是,本步骤不论对服务端时间的验证结果如何,都会向客户端返回一签名,针对不同的验证结果所返回的预设签名会有所不同。返回给客户端的预设签名对应有相应的签名标记,例如,正确签名或错误签名,当然还可以是其它签名标记,这里不做具体限定。
[0055] 例如,服务端可以通过如下方法来对服务端时间进行验证:计算当前与服务端时间之间的时间间隔,通常情况下,对于一个正常获取短信验证码的客户端而言,客户端会在很短的时间内将服务端时间返回至客户端,而对于非法用户而言,其需要进行一些请求录入等刷短信验证码的操作,使得客户端并不能在很短时间内将服务端时间返回至客户端,因此,可以通过判断当前时间与服务端时间之间的时间间隔是否大于第一预设时长来对服务端时间进行验证,其中,第一预设时长是本领域技术人员结合实际经验而设定的,考虑到网络延迟等因素,例如,第一预设时长可以是5秒,若小于或等于第一预设时长,则向手机号码对应的客户端返回第一签名,其中,第一签名被认定为正确签名;若大于第一预设时长,则向手机号码对应的客户端返回第二签名,其中,第二签名被认定为错误签名。
[0056] 在本发明一种可选实施方式中,客户端可以对手机号码及服务端时间进行加密,例如,利用预设哈希算法对手机号码及服务端时间进行哈希处理,将哈希处理后得到的哈希值发送给服务端,即,向服务端发送携带有经过加密的手机号码及服务端时间的短信验证码模拟获取请求。服务端在接收到携带有经过加密的手机号码及服务端时间的短信验证码模拟获取请求后,需要先进行解密处理,解密得到手机号码及服务端时间,然后,再根据当前时间对服务端时间进行验证。
[0057] 步骤S105,客户端接收服务端响应短信验证码模拟获取请求而返回的预设签名,向服务端发送携带有预设签名的短信验证码获取请求。
[0058] 为了能够获取到短信验证码,客户端在接收服务端响应短信验证码模拟获取请求而返回的预设签名后,需要将所接收到的预设签名提供给服务端,具体地,向服务端发送携带有预设签名的短信验证码获取请求。
[0059] 步骤S106,服务端接收客户端发送的携带有预设签名的短信验证码获取请求,响应于短信验证码获取请求,对预设签名进行校验,若校验通过,则向手机号码发送短信验证码,以及向客户端返回预设状态码;若校验失败,则向客户端返回预设状态码。
[0060] 服务端接收客户端发送的携带有预设签名的短信验证码获取请求,为了确定客户端是否存在刷短信验证码的行为,增加非法用户进行破解的成本,服务端响应于短信验证码获取请求,对预设签名进行校验,这里校验的目的是为了确定是否向手机号码发送短信验证码。
[0061] 服务端对预设签名进行校验后,若确定校验通过,则向手机号码发送短信验证码,以及向客户端返回预设状态码,例如,状态码200,以告知客户端短信验证码请求成功;若校验失败,则为了迷惑客户端,同样向客户端返回预设状态码,例如,状态码200,使客户端错误地认为短信验证码发送成功。
[0062] 在本发明一种可选实施方式中,服务端可以将手机号码、预设签名及签名标记关联存储至数据库,以便于后续对客户端返回的预设签名进行校验,其中,签名标记用于标识预设签名是正确签名或错误签名。
[0063] 由于数据库中关联存储很多手机号码、预设签名及签名标记,因此,响应于短信验证码获取请求,对预设签名进行校验具体可以通过如下方法步骤实现:响应于短信验证码获取请求,根据手机号码查询数据库,查询数据库中是否存在与手机号码相匹配的第三签名,如果存在与手机号码相匹配的第三签名,从数据库中提取出与手机号码对应的第三签名及第三签名对应的签名标记;然后,如上面所提到的,不论验证结果如何都会向客户端返回预设签名,因此,数据库中所存储的可能是错误签名,为了避免向非法用户发送短信验证码,这里需要判断客户端发送的预设签名与数据库中存储的第三签名是否一致,且第三签名的签名标记是否为预设标记,这里的预设标记指正确签名,若预设签名与数据库中存储的第三签名一致,且第三签名的签名标记是预设标记,则确定校验通过,向手机号码发送短信验证码,向客户端返回预设状态码,这里的预设状态码可以是200,其中,200表明通知客户端短信验证码发送成功;
[0064] 若预设签名与第三签名不一致和/或第三签名不具有预设标记,则确定校验失败,为了增加非法用户破解时间成本,向客户端返回预设状态码,这里的预设状态码可以是200,其中,200表明通知客户端短信验证码发送成功。在校验失败的情况下,可以确定客户端存在刷取短信验证码的行为,由于响应短信验证码模拟获取请求使得客户端错误的认为其获取到了服务端发送的短信验证码,因此,为了继续对非法用户进行迷惑,服务端向客户端返回预设状态码,使得客户端错误的认为短信验证码发送成功。
[0065] 可选地,服务端还可以仅将手机号码、第一签名关联存储至数据库,即,数据库中并没有关联存储第二签名及手机号码,如果服务端返回给客户端的是第二签名,那么在接收到客户端发送的携带有预设签名短信验证码获取请求后,可以通过如下方法来对预设签名进行校验:响应于短信验证码获取请求,根据手机号码查询数据库,得到与手机号码对应的第三签名;判断预设签名与第三签名是否一致;若是,则确定校验通过;若否,则确定校验失败。
[0066] 步骤S107,客户端接收服务端返回的预设状态码。
[0067] 客户端接收服务端在完成校验后而返回的预设状态码,客户端可以根据预设状态码来确定短信验证码请求是否发送成功。具体地,对于向手机号码发送了短信验证码的情况,客户端会接收到服务端返回的预设状态码,预设状态码可以是200,其中,200表明通知客户端短信验证码发送成功。对于预设签名校验失败的情况,可以确定客户端存在刷取短信验证码的行为,由于响应短信验证码模拟获取请求使得客户端错误的认为其获取到了服务端发送的短信验证码,因此,为了继续对非法用户进行迷惑,服务端向客户端返回预设状态码,使得客户端错误的认为短信验证码发送成功,对于非法用户而言,其会认为所执行的刷短信验证码行为成功,而降低获取短信验证码次数,对非法用户进行误导,从而增加其时间成本。
[0068] 在本发明一种可选实施方式中,服务端还执行如下方法步骤:统计并判断接收到的短信验证码获取请求的请求次数是否大于或等于预设阈值;若是,则向客户端返回图形验证码。
[0069] 通常情况下,正常获取短信验证码的用户不会频繁地执行短信验证码获取操作,为了防止用户频繁刷短信验证码,可以统计所接收到的短信验证码获取请求的请求次数,然后,判断请求次数是否大于或等于预设阈值,其中,预设阈值是本领域技术人员根据实际经验而灵活设定的,例如,预设阈值为2或3,如果判断出请求次数大于或等于预设阈值,则认为存在刷短信验证码的风险,从而向客户端返回图形验证码,用户需要在客户端输入图形验证码后才能够执行获取短信验证码的操作。
[0070] 在本发明一种可选实施方式中,在响应于时间获取请求向客户端返回服务端时间之前,服务端还执行如下方法步骤:获取响应上一次时间获取请求而向客户端返回的服务端时间;
[0071] 判断当前时间与服务端时间之间的时间间隔是否大于第二预设时长;
[0072] 若小于或等于第二预设时长,则拒绝响应客户端发送的时间获取请求;
[0073] 若大于第二预设时长,则判断第一预设时间段内接收到的时间获取请求的请求次数是否大于预设阈值;
[0074] 若是,则在第二预设时间内拒绝响应客户端发送的时间获取请求;
[0075] 若否,则执行响应于时间获取请求向客户端返回服务端时间。
[0076] 具体地,为了防止非法用户恶意刷取短信验证码,服务端对客户端所能够请求的次数,以及两次请求之间的时间差进行了限制,具体地,在接收到客户端发送的时间获取请求之后,并没有直接响应该请求向客户端返回服务端时间,而是先获取到服务端响应上一次时间获取请求而向客户端返回的服务端时间,计算当前时间与上一次返回的服务端时间之间的时间间隔,判断时间间隔是否大于第二预设时长,例如,第二预设时长可以是1分钟,也就是说,1分钟内只允许客户端请求一次短信验证码,当然这里仅是举例说明,第二预设时长还可以是其它指,例如,2分钟,为了避免给正常用户带来不好的使用体验,第二预设时长不宜设置太长,若当前时间与服务端时间之间的时间间隔小于或等于第二预设时长,则认为用户请求过于频繁,可以拒绝响应客户端发送的时间获取请求;若当前时间与服务端时间之间的时间间隔大于第二预设时长,则还需要进一步判断第一预设时间段内接收到的时间获取请求的请求次数是否大于预设阈值,通过限制第一预设时间内所能够执行的请求次数,可以有效控制非法用户恶意刷取短信验证码,其中,第一预设时间段和预设阈值都可以灵活设定,例如,第一预设时间段为5分钟,预设阈值为3次,也就是说,在5分钟内允许请求短信验证码的次数为3次;
[0077] 若第一预设时间段内接收到的时间获取请求的请求次数大于预设阈值,则认为用户有刷取短信验证码的行为,可以执行如下操作:在第二预设时间内拒绝响应客户端发送的时间获取请求,例如,冻结10分钟,10分钟内对客户端所发送的任何请求都不会做出响应。
[0078] 若第一预设时间段内接收到的时间获取请求的请求次数小于或等于,则执行响应于时间获取请求向客户端返回服务端时间。
[0079] 本发明上述实施实例提供的方法,针对用户所执行的短信验证码获取操作,需要通过三次请求才能够实现获取短信验证码,从而增加了非法用户的时间成本,提升了其破解难度;服务端通过进行两次校验,能够准确地识别出是否存在刷取短信验证码行为,并进行相应的处理,对于刷取短信验证码行为,服务端会返回预设状态码,使非法用户认为短信验证码发送成功,而对其进行误导,从而使非法用户在认为成功的情况下,而减少了刷取短信验证码的操作。
[0080] 图2示出了根据本发明另一个实施例的短信验证码防刷方法的流程示意图如图2所示,该方法包括以下步骤:
[0081] 步骤S201,接收客户端发送的时间获取请求,响应于时间获取请求向客户端返回服务端时间,其中,时间获取请求具体为客户端响应用户触发的短信验证码获取操作而发送的。
[0082] 步骤S202,接收客户端发送的携带有手机号码及服务端时间的短信验证码模拟获取请求,响应于验证码获取请求,对服务端时间进行验证,并根据验证结果向客户端返回预设签名。
[0083] 步骤S203,接收客户端发送的携带有预设签名的短信验证码获取请求,响应于短信验证码获取请求,对预设签名进行校验,若校验通过,则向手机号码发送短信验证码,以及向客户端返回预设状态码;若校验失败,则向客户端返回预设状态码。
[0084] 可选地,对服务端时间进行验证,并根据验证结果向手机号码对应的客户端返回预设签名包括:
[0085] 获取当前时间,判断当前时间与服务端时间之间的时间间隔是否大于第一预设时长;
[0086] 若小于或等于第一预设时长,则向客户端返回第一签名;
[0087] 若大于第一预设时长,则向客户端返回第二签名。
[0088] 可选地,方法还包括:将手机号码与预设签名关联存储至数据库;
[0089] 响应于短信验证码获取请求,对预设签名进行校验包括:
[0090] 响应于短信验证码获取请求,根据手机号码查询数据库,得到与手机号码对应的第三签名;
[0091] 判断预设签名与第三签名是否一致,且第三签名的签名标记是否为预设标记;
[0092] 若是,则确定校验通过;
[0093] 若预设签名与第三签名不一致和/或第三签名的签名标记不是预设标记,则确定校验失败。
[0094] 可选地,方法还包括:统计并判断接收到的短信验证码获取请求的请求次数是否大于或等于预设阈值;
[0095] 若是,则向客户端返回图形验证码。
[0096] 可选地,在响应于时间获取请求向客户端返回服务端时间之前,方法还包括:获取响应上一次时间获取请求而向客户端返回的服务端时间;
[0097] 判断当前时间与服务端时间之间的时间间隔是否大于第二预设时长;
[0098] 若小于或等于第二预设时长,则拒绝响应客户端发送的时间获取请求;
[0099] 若大于第二预设时长,则判断第一预设时间段内接收到的时间获取请求的请求次数是否大于预设阈值;
[0100] 若是,则在第二预设时间内拒绝响应客户端发送的时间获取请求;
[0101] 若否,则执行响应于时间获取请求向客户端返回服务端时间。
[0102] 本实施例中的各步骤实现可以参见图1所示实施例相应步骤,这里不再赘述。
[0103] 本发明上述实施实例提供的方法,针对用户所执行的短信验证码获取操作,需要通过三次请求才能够实现获取短信验证码,从而增加了非法用户的时间成本,提升了其破解难度;服务端通过进行两次校验,能够准确地识别出是否存在刷取短信验证码行为,并进行相应的处理,对于刷取短信验证码行为,服务端会返回预设状态码,使非法用户认为短信验证码发送成功,而对其进行误导,从而使非法用户在认为成功的情况下,而减少了刷取短信验证码的操作。
[0104] 图3示出了根据本发明另一个实施例的短信验证码防刷方法的流程示意图如图3所示,该方法包括以下步骤:
[0105] 步骤S301,响应于用户触发的短信验证码获取操作,向服务端发送时间获取请求。
[0106] 步骤S302,接收服务端响应时间获取请求返回的服务端时间,向服务端发送携带有手机号码及服务端时间的短信验证码模拟获取请求,以供服务端对服务端时间进行验证。
[0107] 步骤S303,接收服务端响应短信验证码模拟获取请求而返回的预设签名,向服务端发送携带有预设签名的短信验证码获取请求,以供服务端对预设签名进行校验,并返回预设状态码。
[0108] 步骤S304,接收服务端返回的预设状态码。
[0109] 可选地,向服务端发送携带有手机号码及服务端时间的短信验证码模拟获取请求包括:
[0110] 利用预设加密算法对手机号码及服务端时间进行加密,向服务端发送携带有经过加密的手机号码及服务端时间的短信验证码模拟获取请求。
[0111] 可选地,方法还包括:接收并显示服务端在判断出接收到的短信验证码获取请求的请求次数大于或等于预设阈值而返回图形验证码。
[0112] 本实施例中的各步骤实现可以参见图1所示实施例相应步骤,这里不再赘述。
[0113] 本发明上述实施实例提供的方法,针对用户所执行的短信验证码获取操作,需要通过三次请求才能够实现获取短信验证码,从而增加了非法用户的时间成本,提升了其破解难度;对于刷取短信验证码行为,服务端会返回预设状态码,客户端接收到预设状态码,使非法用户认为短信验证码发送成功,而对其进行误导,从而使非法用户在认为成功的情况下,而减少了刷取短信验证码的操作。
[0114] 图4示出了根据本发明一个实施例的短信验证码防刷装置的结构示意图如图4所示,该装置包括:第一接收模块401、第一返回模块402、第二接收模块403、验证处理模块404、第三接收模块405、校验处理模块406、第二返回模块407。
[0115] 第一接收模块401,适于接收客户端发送的时间获取请求,其中,时间获取请求具体为客户端响应用户触发的短信验证码获取操作而发送的;
[0116] 第一返回模块402,适于响应于时间获取请求向客户端返回服务端时间;
[0117] 第二接收模块403,适于接收客户端发送的携带有手机号码及服务端时间的短信验证码模拟获取请求;
[0118] 验证处理模块404,适于响应于验证码获取请求,根据当前时间对服务端时间进行验证,并根据验证结果向手机号码对应的客户端返回预设签名;
[0119] 第三接收模块405,适于接收客户端发送的携带有预设签名的短信验证码获取请求;
[0120] 校验处理模块406,适于响应于短信验证码获取请求,对预设签名进行校验;
[0121] 第二返回模块407,适于若校验通过,则向手机号码发送短信验证码,以及向客户端返回预设状态码;若校验失败,则向客户端返回预设状态码。
[0122] 可选地,验证处理模块进一步适于:判断当前时间与服务端时间之间的时间间隔是否大于第一预设时长;
[0123] 若小于或等于第一预设时长,则向手机号码对应的客户端返回第一签名;
[0124] 若大于第一预设时长,则向手机号码对应的客户端返回第二签名。
[0125] 可选地,装置还包括:数据库,适于关联存储手机号码、预设签名及签名标记;
[0126] 校验处理模块进一步适于:响应于短信验证码获取请求,根据手机号码查询数据库,得到与手机号码对应的第三签名;
[0127] 判断预设签名与第三签名是否一致,且第三签名的签名标记是否为预设标记;
[0128] 若是,则确定校验通过;
[0129] 若预设签名与第三签名不一致和/或第三签名的签名标记不是预设标记,则确定校验失败。
[0130] 可选地,装置还包括:第一判断模块,适于统计并判断接收到的短信验证码获取请求的请求次数是否大于或等于预设阈值;
[0131] 返回模块进一步适于:若大于或等于预设阈值,则向客户端返回图形验证码。
[0132] 可选地,装置还包括:获取模块,适于获取响应上一次时间获取请求而向客户端返回的服务端时间;
[0133] 第二判断模块,适于判断当前时间与服务端时间之间的时间间隔是否大于第二预设时长;
[0134] 拒绝响应模块,适于若小于或等于第二预设时长,则拒绝响应客户端发送的时间获取请求;
[0135] 第三判断模块,适于若大于第二预设时长,则判断第一预设时间段内接收到的时间获取请求的请求次数是否大于预设阈值;
[0136] 拒绝响应模块还适于:若第一预设时间段内接收到的时间获取请求的请求次数大于预设阈值,则在第二预设时间内拒绝响应客户端发送的时间获取请求;
[0137] 返回模块进一步适于:若第一预设时间段内接收到的时间获取请求的请求次数小于或等于预设阈值,则执行响应于时间获取请求向客户端返回服务端时间。
[0138] 本发明上述实施实例提供的装置,针对用户所执行的短信验证码获取操作,需要通过三次请求才能够实现获取短信验证码,从而增加了非法用户的时间成本,提升了其破解难度;服务端通过进行两次校验,能够准确地识别出是否存在刷取短信验证码行为,并进行相应的处理,对于刷取短信验证码行为,服务端会返回预设状态码,使非法用户认为短信验证码发送成功,而对其进行误导,从而使非法用户在认为成功的情况下,而减少了刷取短信验证码的操作。
[0139] 图5示出了根据本发明一个实施例的短信验证码防刷装置的结构示意图如图5所示,该装置包括:第一发送模块501、第一接收模块502、第二发送模块503、第二接收模块504、第三发送模块505、第三接收模块506。
[0140] 第一发送模块501,适于响应于用户触发的短信验证码获取操作,向服务端发送时间获取请求;
[0141] 第一接收模块502,适于接收服务端响应时间获取请求返回的服务端时间;
[0142] 第二发送模块503,适于向服务端发送携带有手机号码及服务端时间的短信验证码模拟获取请求,以供服务端根据当前时间对服务端时间进行验证;
[0143] 第二接收模块504,适于接收服务端根据手机号码响应短信验证码模拟获取请求而返回的预设签名;
[0144] 第三发送模块505,适于向服务端发送携带有预设签名的短信验证码获取请求,以供服务端对预设签名进行校验,并返回预设状态码;
[0145] 第三接收模块506,适于接收服务端返回的预设状态码。
[0146] 可选地,第二发送模块进一步适于:利用预设加密算法对手机号码及服务端时间进行加密,向服务端发送携带有经过加密的手机号码及服务端时间的短信验证码模拟获取请求。
[0147] 可选地,装置还包括:呈现模块,适于接收并显示服务端在判断出接收到的短信验证码获取请求的请求次数大于或等于预设阈值而返回图形验证码。
[0148] 本发明上述实施实例提供的装置,针对用户所执行的短信验证码获取操作,需要通过三次请求才能够实现获取短信验证码,从而增加了非法用户的时间成本,提升了其破解难度;对于刷取短信验证码行为,服务端会返回预设状态码,客户端接收到预设状态码,使非法用户认为短信验证码发送成功,而对其进行误导,从而使非法用户在认为成功的情况下,而减少了刷取短信验证码的操作。
[0149] 本申请实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的短信验证码防刷方法。
[0150] 图6示出了根据本发明一个实施例的计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
[0151] 如图6所示,该计算设备可以包括:处理器(processor)602、通信接口(Communications Interface)604、存储器(memory)606、以及通信总线608。
[0152] 其中:
[0153] 处理器602、通信接口604、以及存储器606通过通信总线608完成相互间的通信。
[0154] 通信接口604,用于与其它设备比如客户端或其它服务器等的网元通信。
[0155] 处理器602,用于执行程序610,具体可以执行上述短信验证码防刷方法实施例中的相关步骤。
[0156] 具体地,程序610可以包括程序代码,该程序代码包括计算机操作指令。
[0157] 处理器602可能是中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
[0158] 存储器606,用于存放程序610。存储器606可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0159] 程序610具体可以用于使得处理器602执行上述任意方法实施例中的短信验证码防刷方法。程序610中各步骤的具体实现可以参见上述短信验证码防刷实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
[0160] 在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0161] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0162] 类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
[0163] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0164] 此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
[0165] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0166] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。