一种发送验证信息的方法及系统与流程

文档序号:14864170发布日期:2018-07-04 09:56阅读:136来源:国知局
一种发送验证信息的方法及系统与流程

本发明属于通信技术领域,尤其涉及一种发送验证信息的方法及系统。



背景技术:

市场上很多终端的app是用手机号注册或者登录的,一般在获取手机接收的验证信息之前,需要先输入几个数字或者符号的验证码进行注册或登录。

而为了避免验证码被频繁或攻击性地发送,现有技术将验证码设计的更为复杂化,验证码上的文字歪歪斜斜的甚至难以辨认,用户输入的时候可能输入错误,对登录或注册app造成了一定的障碍,从而降低了用户的操作效率。



技术实现要素:

针对现有技术存在的问题,本发明实施例提供了一种发送验证信息的方法及系统,用于解决现有技术中在登录或注册app时,避免验证码被频繁或者攻击性地发送,导致用户操作效率降低的技术问题。

本发明提供一种发送验证信息的方法,所述方法包括:

客户端获取第一网络请求信息;

根据所述第一网络请求信息生成第二网络请求信息及第一接口参数;将所述第二网络请求信息及所述第一接口参数进行拼接生成第三网络请求信息;

将所述第三网络请求信息发送至服务器,使得所述服务器能基于所述第三网络请求信息计算第二接口参数,并判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第二接口参数及所述第一接口参数一致时,向所述客户端发送所述验证信息;其中,所述第一网络请求信息、所述第二网络请求信息与所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同;所述第一接口参数与所述第二接口参数为令牌值。

上述方案中,所述根据所述第一网络请求信息生成第二网络请求信息及第一接口参数,包括:

从字典中获取所述第一网络请求信息中的时间参数字符串;

获取所述时间参数字符串的键值key,每个键值对应一个数值;

按照预设的第一排序规则对所述键值进行排序,获取键值数组;

利用所述键值与所述数值之间的映射关系将所述键值数组转换为所述数值的字符串;

将所述数值的字符串与服务器地址进行拼接获取所述第二网络请求信息;

利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数。

上述方案中,所述利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数,包括:

解析所述第二网络请求信息,获取服务器地址及第一查询字符串;

将所述第一查询字符串中的参数按照预设的第二排序规则进行排序,形成所述第二查询字符串;

根据所述第二查询字符串生成第四网络请求信息;

利用对称算法基于所述第四网络请求信息生成摘要信息;

对所述摘要信息进行加密处理;

将预设密钥的明文信息与加密处理后的摘要信息进行拼接,形成所述第一接口参数。

本发明还提供一种发送验证信息的方法,所述方法包括:

客户端获取第一网络请求信息;

根据所述第一网络请求信息生成第二网络请求信息及第一接口参数;将所述第二网络请求信息及所述第一接口参数进行拼接生成第三网络请求信息,并将所述第三网络请求信息发送至服务器;

服务器基于所述第三网络请求信息计算第二接口参数,判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第一接口参数及所述第二接口参数一致时,向所述客户端发送所述验证信息;其中,所述第一网络请求信息、所述第二网络请求信息与所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同;所述第一接口参数与所述第二接口参数为令牌值。

上述方案中,所述服务器向所述客户端发送所述验证信息时,按照预设的发送次数进行发送。

本发明还提供一种客户端,所述客户端包括:

获取单元,用于获取第一网络请求信息;

第一生成单元,用于根据所述第一网络请求信息生成第二网络请求信息及第一接口参数;第二生成单元,用于根据所述第二网络请求信息及所述第一接口参数生成第三网络请求信息;

发送单元,用于将所述第三网络请求信息发送至服务器,使得所述服务器能基于所述第三网络请求信息计算第二接口参数,并当确定所述第二接口参数及所述第一接口参数一致时,向所述客户端发送所述验证信息;其中,所述第一网络请求信息、所述第二网络请求信息与所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同;所述第一接口参数与所述第二接口参数为令牌值。

上述方案中,所述第一生成单元包括:

第一获取子单元,用于从字典中获取所述第一网络请求信息中的时间参数字符串;

获取所述时间参数字符串的键值key,每个键值对应一个数值;

按照预设的第一排序规则对所述键值进行排序,获取键值数组;

转换子单元,用于利用所述键值与所述数值之间的映射关系将所述键值数组转换为所述数值的字符串;

拼接子单元,用于将所述数值的字符串与服务器地址进行拼接获取所述第二网络请求信息;

第二获取子单元,用于利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数。

上述方案中,所述第二获取子单元利用md5算法从所述第二网络请求信息中获取所述第一接口参数,包括:

解析所述第二网络请求信息,获取服务器地址及第一查询字符串;

将所述第一查询字符串中的参数按照预设的第二排序规则进行排序,形成所述第二查询字符串;

根据所述第二查询字符串生成第四网络请求信息;

利用对称算法基于所述第四网络请求信息生成摘要信息;

对所述摘要信息进行加密处理;

将预设密钥的明文信息与加密处理后的摘要信息进行拼接,形成所述第一接口参数。

本发明还提供一种发送验证信息的系统,所述系统包括:

客户端,用于获取第一网络请求信息;根据所述第一网络请求信息生成第二网络请求信息及第一接口参数;将所述第二网络请求信息及所述第一接口参数进行拼接生成第三网络请求信息,并将所述第三网络请求信息发送至服务器;服务器,用于基于所述第三网络请求信息计算第二接口参数,判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第一接口参数及所述第二接口参数一致时,向所述客户端发送所述验证信息;其中,所述第一网络请求信息、所述第二网络请求信息与所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同;所述第一接口参数与所述第二接口参数为令牌值。

上述方案中,所述服务器向所述客户端发送所述验证信息时,按照预设的发送次数进行发送。

本发明提供了一种发送验证信息的方法及系统,所述方法包括:客户端获取第一网络请求信息;根据所述第一网络请求信息生成第二网络请求信息及第一接口参数;将所述第二网络请求信息及所述第一接口参数进行拼接生成第三网络请求信息;将所述第三网络请求信息发送至服务器,使得所述服务器能基于所述第三网络请求信息计算第二接口参数,并判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第二接口参数及所述第一接口参数一致时,向所述客户端发送所述验证信息;其中,所述第一网络请求信息、所述第二网络请求信息与所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同;所述第一接口参数与所述第二接口参数为令牌值;如此,即使用户利用脚本软件抓取或更换第一网络请求信息中的电话号码,也不能频繁或攻击性地向该电话号码发送验证信息,因为还需获取到正确的令牌值,才能发送验证信息,这样就降低了恶意重发验证信息的几率,并且也无需输入难以辨认的验证码进行验证,进而提高了用户的操作效率。

附图说明

图1为本发明实施例提供的发送验证信息的系统的整体结构示意图;

图2为本发明实施例提供的发送验证信息的方法流程示意图;

图3为本发明实施例提供的又一发送验证信息的方法流程示意图

图4为本发明实施例提供的客户端的整体结构示意图;

图5为本发明实施例提供第一生成单元的整体结构示意图。

具体实施方式

为了在登录或注册app时,无需输入难以辨认的验证码进行验证,且利用接收的验证信息进行验证时,降低了恶意重发验证信息的几率,提高用户的操作效率,本发明提供了一种发送验证信息的方法及系统,所述方法包括:客户端获取第一网络请求信息;根据所述第一网络请求信息生成第二网络请求信息及第一接口参数;将所述第二网络请求信息及所述第一接口参数进行拼接生成第三网络请求信息;将所述第三网络请求信息发送至服务器,使得所述服务器能基于所述第三网络请求信息计算第二接口参数,并判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第二接口参数及所述第一接口参数一致时,向所述客户端发送所述验证信息;其中,所述第一网络请求信息、所述第二网络请求信息与所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同;所述第一接口参数与所述第二接口参数为令牌值;

下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。

在介绍本发明的方法实施例之前,先介绍本发明实施例中验证系统架构,如图1所示,该系统包括:客户端101和服务器102。服务器102如图1所示,可与n个客户端101实现通信连接,n为自然数,其中,客户端101、服务器102之间的通信方式可以是有线通信,也可以是无线通信,所述客户端101具体可以是智能手机,也可以是平板电脑,还可以是智能穿戴设备等等,本申请对此不作限定。

如图2所示,所述客户端101与所述服务器102之间的数据交互过程如下:

s1,客户端获取第一网络请求信息;根据所述第一网络请求信息生成第二网络请求信息及第一接口参数;根据所述第二网络请求信息及所述第一接口参数生成第三网络请求信息,客户端将所述第三网络请求信息发送至服务器。

本步骤中,客户端获取第一网络请求信息,获取到第一网络请求信息后,根据所述第一网络请求信息生成第二网络请求信息及第一接口参数,具体包括:

因第一网络请求信息是在字典dict中的,客户端首先从字典dict中获取时间参数的字符串,比如,所述时间参数的字符串可以为e=14696&method=get-code&mobile=1355408****;其中,e,method,mobile是一个字典dict的键值key;1469,get-code,1355408****是字典dict的数值value。其中,所述第一网络请求信息是统一资源定位符url。

当获取到时间参数字符串的所有的键值key后,按照预设的第一排序规则对所述键值key进行排序,获取键值数组;所述第一排序规则可以利用ortedarrayusingcomparator排序方法生成,利用ortedarrayusingcomparator排序方法即可生成一个有顺序的键值数组array。所述键值数组array中的键值key可以是按照升序排序,也可以是按照降序排序,本实施例中是按照升序a-z进行排序。

当获取到键值数组后,利用所述键值与所述数值之间的映射关系将所述键值数组转换为所述数值的字符串,将所述数值的字符串与服务器地址进行拼接获取所述第二网络请求信息;利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数。

具体地,利用objectatindex方法取出键值数组中的第一个键值key1,利用映射关系通过所述第一个键值key1从字典dict中取出第一个数值value1,然后将第一个键值key1和第一个数值value1拼接成一个新的字符串dictvaluestr1;依此类推,将所有的键值都转化为dictvaluestr类型的字符串,最后将所有dictvaluestr类型的字符串进行拼接,形成所述数值的字符串。

然后将数值的字符串与服务器地址的path部分进行拼接形成第二网络请求信息sorturl;其中,所述第二网络请求信息其实也是一个url,但于所述第一网络请求信息不同;所述服务器地址包括:path部分和查询字符串query_string部分。例如,将dictvaluestr1、dictvaluestr2等字符串与http://服务器地址/api进行拼接即形成第二网络请求信息sorturl。所述http://服务器地址/api即为所述服务器地址的path部分。

获取到第二网络请求信息sorturl后,利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数。其中,所述对称加密算法可以是md5算法中的getnewtoken函数。所述第一接口参数为客户端计算得出的令牌token值。

具体地,解析所述第二网络请求信息sorturl,获取服务器地址前半部分path部分及第一查询字符串query_string1;

将所述第一查询字符串query_string1中的参数按照预设的第二排序规则进行排序,然后将第一查询字符串query_string1中的参数按顺序插入“=”和“&”进行加密形成所述第二查询字符串query_string2。其中,所述第二排序规则可以是按照名称排序。

根据所述第二查询字符串query_string2生成第四网络请求信息;具体地,利用字符串拼接的方式,拼接服务器地址的前半部分path部分和第二查询字符串query_string2,并在path部分和第二查询字符串部分query_string2之间插入“?”进行加密,形成第四网络请求信息urll。

利用对称算法基于更新后的所述第四网络请求信息中的第二查询字符query_string2生成摘要信息digest;其中,所述摘要信息digest中第一个参数是私钥secret_key,第二个参数即为第四网络请求信息url1。其中,本实施例中的对称算法是hmac_sha1算法。

获取到摘要信息digest后,对所述摘要信息digest进行加密处理;具体地,对摘要信息digest进行base64编码处理,将编码处理后的摘要信息digest进行安全处理,比如将摘要信息digest中的字符“/”替换成“_”;将字符“+”替换成“-”;当然,这只是其中的一种替换方式,在此不做限定。

最后将预设密钥的明文信息access_key与加密处理后的摘要信息digest进行拼接,所述明文信息与加密处理后的摘要信息digest之间通过“:”连接,形成所述第一接口参数。

当生成第一接口参数之后,根据所述第二网络请求信息sorturl及所述第一接口参数生成第三网络请求信息;具体地是将第一接口参数token拼接值所述第二网络请求信息sorturl之后,即形成所述第三网络请求信息tokenurl,并将所述第三网络请求信息tokenurl发送至服务器。其中,所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同。

比如,所述第三网络请求信息tokenurl=http://服务器地址/api?e=14696&method=get-code&mobile=1355408****%%%%%&token=********************

s2,服务器基于所述第三网络请求信息计算第二接口参数,判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第一接口参数及所述第二接口参数一致时,向所述客户端发送所述验证信息。

本步骤中,当所述服务器接收到第三网络请求信息tokenurl后,通过token关键字对所述第三网络请求信息tokenurl进行解析,获取第三网络请求信息tokenurl中token后的值,基于所述token后的值利用与客户端获取第一接口参数同样的方法获取第二接口参数,并判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第一接口参数及所述第二接口参数一致时,向所述客户端发送所述验证信息。这里,所述第二接口参数是服务器计算出的令牌token值,因服务器获取第二接口参数与客户端获取第一接口参数的过程一样,在此不再赘述。

并且,在向所述客户端发送验证信息时,为了避免频繁恶意发送,需要按照预设的发送次数进行发送。所述预设的发送次数可以根据实际场景进行设置,本实施例中设置的发送次数为10次。

实施例二

本实施例提供一种发送验证信息的方法,所述方法基于客户端侧,如图3所示,所述方法包括:

s301,客户端获取第一网络请求信息;根据所述第一网络请求信息生成第二网络请求信息及第一接口参数。

本步骤中,客户端获取第一网络请求信息,获取到第一网络请求信息后,根据所述第一网络请求信息生成第二网络请求信息及第一接口参数,具体包括:

因第一网络请求信息是在字典dict中的,客户端首先从字典dict中获取时间参数的字符串,比如,所述时间参数的字符串可以为e=14696&method=get-code&mobile=1355408****;其中,e,method,mobile是一个字典dict的键值key;1469,get-code,1355408****是字典dict的数值value。其中,所述第一网络请求信息是统一资源定位符url。

当获取到时间参数字符串的所有的键值key后,按照预设的第一排序规则对所述键值key进行排序,获取键值数组;所述第一排序规则可以利用ortedarrayusingcomparator排序方法生成,利用ortedarrayusingcomparator排序方法即可生成一个有顺序的键值数组array。所述键值数组array中的键值key可以是按照升序排序,也可以是按照降序排序,本实施例中是按照升序a-z进行排序。

当获取到键值数组后,利用所述键值与所述数值之间的映射关系将所述键值数组转换为所述数值的字符串,将所述数值的字符串与服务器地址进行拼接获取所述第二网络请求信息;利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数。

具体地,利用objectatindex方法取出键值数组中的第一个键值key1,利用映射关系通过所述第一个键值key1从字典dict中取出第一个数值value1,然后将第一个键值key1和第一个数值value1拼接成一个新的字符串dictvaluestr1;依此类推,将所有的键值都转化为dictvaluestr类型的字符串,最后将所有dictvaluestr类型的字符串进行拼接,形成所述数值的字符串。

然后将数值的字符串与服务器地址的path部分进行拼接形成第二网络请求信息sorturl;其中,所述第二网络请求信息其实也是一个url,但于所述第一网络请求信息不同;所述服务器地址包括:path部分和查询字符串query_string部分。例如,将dictvaluestr1、dictvaluestr2等字符串与http://服务器地址/api进行拼接即形成第二网络请求信息sorturl。所述http://服务器地址/api即为所述服务器地址的path部分。

获取到第二网络请求信息sorturl后,利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数。其中,所述对称加密算法可以是md5算法中的getnewtoken函数。所述第一接口参数为客户端计算得出的令牌token值。

具体地,解析所述第二网络请求信息sorturl,获取服务器地址前半部分path部分及第一查询字符串query_string1;

将所述第一查询字符串query_string1中的参数按照预设的第二排序规则进行排序,然后将第一查询字符串query_string1中的参数按顺序插入“=”和“&”进行加密形成所述第二查询字符串query_string2。其中,所述第二排序规则可以是按照名称排序。

根据所述第二查询字符串query_string2生成第四网络请求信息;具体地,利用字符串拼接的方式,拼接服务器地址的前半部分path部分和第二查询字符串query_string2,并在path部分和第二查询字符串部分query_string2之间插入“?”进行加密,形成第四网络请求信息urll。

利用对称算法基于更新后的所述第四网络请求信息中的第二查询字符query_string2生成摘要信息digest;其中,所述摘要信息digest中第一个参数是私钥secret_key,第二个参数即为第四网络请求信息url1。其中,本实施例中的对称算法是hmac_sha1算法。

获取到摘要信息digest后,对所述摘要信息digest进行加密处理;具体地,对摘要信息digest进行base64编码处理,将编码处理后的摘要信息digest进行安全处理,比如将摘要信息digest中的字符“/”替换成“_”;将字符“+”替换成“-”;当然,这只是其中的一种替换方式,在此不做限定。

最后将预设密钥的明文信息access_key与加密处理后的摘要信息digest进行拼接,所述明文信息与加密处理后的摘要信息digest之间通过“:”连接,形成所述第一接口参数。

s302,根据所述第二网络请求信息及所述第一接口参数生成第三网络请求信息。

本步骤中,当生成第一接口参数之后,根据所述第二网络请求信息sorturl及所述第一接口参数生成第三网络请求信息;具体地是将第一接口参数拼接值所述第二网络请求信息sorturl之后,即形成所述第三网络请求信息tokenurl,比如,所述第三网络请求信息tokenurl=http://服务器地址/api?e=14696&method=get-code&mobile=1355408****%%%%%&token=********************;其中,所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同。

s303,将所述第三网络请求信息发送至服务器。

本步骤中,当客户端生成第三网络请求信息后,并将所述第三网络请求信息tokenurl发送至服务器。

当所述服务器接收到第三网络请求信息tokenurl后,通过token关键字对所述第三网络请求信息tokenurl进行解析,获取第三网络请求信息tokenurl中token后的值,基于所述token后的值利用与客户端获取第一接口参数token同样的方法获取第二接口参数,并判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第一接口参数及所述第二接口参数一致时,向所述客户端发送所述验证信息。这里,所述第二接口参数是服务器计算出的令牌token值,因服务器获取第二接口参数与客户端获取第一接口参数的过程一样,在此不再赘述。

并且,在向所述客户端发送验证信息时,为了避免频繁恶意发送,需要按照预设的发送次数进行发送。所述预设的发送次数可以根据实际场景进行设置,本实施例中设置的发送次数为10次。

实施例三

相应于实施例一,本实施例提供了一种发送验证信息的系统,参见图1,所述系统包括:客户端101和服务器102;在发送验证信息时,具体实现如下:

所述客户端101获取第一网络请求信息,获取到第一网络请求信息后,根据所述第一网络请求信息生成第二网络请求信息及第一接口参数,具体包括:

因第一网络请求信息url是在字典dict中的,客户端101首先从字典dict中获取时间参数的字符串,比如,所述时间参数的字符串可以为e=14696&method=get-code&mobile=1355408****;其中,e,method,mobile是一个字典dict的键值key;1469,get-code,1355408****是字典dict的数值value。其中,所述第一网络请求信息是统一资源定位符url。

当获取到时间参数字符串的所有的键值key后,按照预设的第一排序规则对所述键值key进行排序,获取键值数组;所述第一排序规则可以利用ortedarrayusingcomparator排序方法生成,利用ortedarrayusingcomparator排序方法即可生成一个有顺序的键值数组array。所述键值数组array中的键值key可以是按照升序排序,也可以是按照降序排序,本实施例中是按照升序a-z进行排序。

当获取到键值数组后,利用所述键值与所述数值之间的映射关系将所述键值数组转换为所述数值的字符串,将所述数值的字符串与服务器地址进行拼接获取所述第二网络请求信息;利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数。

具体地,利用objectatindex方法取出键值数组中的第一个键值key1,利用映射关系通过所述第一个键值key1从字典dict中取出第一个数值value1,然后将第一个键值key1和第一个数值value1拼接成一个新的字符串dictvaluestr1;依此类推,将所有的键值都转化为dictvaluestr类型的字符串,最后将所有dictvaluestr类型的字符串进行拼接,形成所述数值的字符串。

然后将数值的字符串与服务器地址的path部分进行拼接形成第二网络请求信息sorturl;其中,所述第二网络请求信息其实也是一个url,但于所述第一网络请求信息不同;所述服务器地址包括:path部分和查询字符串query_string部分。例如,将dictvaluestr1、dictvaluestr2等字符串与http://服务器地址/api进行拼接即形成第二网络请求信息sorturl。所述http://服务器地址/api即为所述服务器地址的path部分。

获取到第二网络请求信息sorturl后,利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数。其中,所述对称加密算法可以是md5算法中的getnewtoken函数。所述第一接口参数为客户端计算得出的令牌token值。

具体地,解析所述第二网络请求信息sorturl,获取服务器地址前半部分path部分及第一查询字符串query_string1;

将所述第一查询字符串query_string1中的参数按照预设的第二排序规则进行排序,然后将第一查询字符串query_string1中的参数按顺序插入“=”和“&”进行加密形成所述第二查询字符串query_string2。其中,所述第二排序规则可以是按照名称排序。

根据所述第二查询字符串query_string2生成第四网络请求信息;具体地,利用字符串拼接的方式,拼接服务器地址的前半部分path部分和第二查询字符串query_string2,并在path部分和第二查询字符串部分query_string2之间插入“?”进行加密,形成第四网络请求信息urll。

利用对称算法基于更新后的所述第四网络请求信息中的第二查询字符query_string2生成摘要信息digest;其中,所述摘要信息digest中第一个参数是私钥secret_key,第二个参数即为第四网络请求信息url1。其中,本实施例中的对称算法是hmac_sha1算法。

获取到摘要信息digest后,对所述摘要信息digest进行加密处理;具体地,对摘要信息digest进行base64编码处理,将编码处理后的摘要信息digest进行安全处理,比如将摘要信息digest中的字符“/”替换成“_”;将字符“+”替换成“-”;当然,这只是其中的一种替换方式,在此不做限定。

最后将预设密钥的明文信息access_key与加密处理后的摘要信息digest进行拼接,所述明文信息与加密处理后的摘要信息digest之间通过“:”连接,形成所述第一接口参数。

当生成第一接口参数之后,根据所述第二网络请求信息sorturl及所述第一接口参数生成第三网络请求信息;具体地是将第一接口参数拼接值所述第二网络请求信息sorturl之后,即形成所述第三网络请求信息tokenurl,并将所述第三网络请求信息tokenurl发送至服务器。其中,所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同。

比如,所述第三网络请求信息tokenurl=http://服务器地址/api?e=14696&method=get-code&mobile=1355408****%%%%%&token=********************

当所述服务器102接收到第三网络请求信息tokenurl后,通过token关键字对所述第三网络请求信息tokenurl进行解析,获取第三网络请求信息tokenurl中token后的值,基于所述token后的值利用与客户端获取第一接口参数同样的方法获取第二接口参数,并判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第一接口参数及所述第二接口参数一致时,向所述客户端101发送所述验证信息。这里,所述第二接口参数是服务器计算出的令牌token值,因服务器102获取第二接口参数与客户端101获取第一接口参数的过程一样,在此不再赘述。

并且,在向所述客户端101发送验证信息时,为了避免频繁恶意发送,需要按照预设的发送次数进行发送。所述预设的发送次数可以根据实际场景进行设置,本实施例中设置的发送次数为10次。

实施例四

相应于实施例二,本实施例还提供一种客户端,如图4所示,所述客户端包括:获取单元41、第一生成单元42、第二生成单元43、发送单元44;其中,

所述获取单元41用于获取第一网络请求信息;因第一网络请求信息是在字典dict中的,客户端首先从字典dict中获取时间参数的字符串,比如,所述时间参数的字符串可以为e=14696&method=get-code&mobile=1355408****;其中,e,method,mobile是一个字典dict的键值key;1469,get-code,1355408****是字典dict的数值value。其中,所述第一网络请求信息是统一资源定位符url。

当所述获取单元41获取到第一网络请求信息后,第一生成单元42用于根据所述第一网络请求信息生成第二网络请求信息及第一接口参数。

具体地,参见图5,所述第一生成单元42包括:第一获取子单元51、转换子单元52、拼接子单元53及第二获取子单元54;其中,

当第一获取子单元51获取到时间参数字符串的所有的键值key后,按照预设的第一排序规则对所述键值key进行排序,获取键值数组;所述第一排序规则可以利用ortedarrayusingcomparator排序方法生成,利用ortedarrayusingcomparator排序方法即可生成一个有顺序的键值数组array。所述键值数组array中的键值key可以是按照升序排序,也可以是按照降序排序,本实施例中是按照升序a-z进行排序。

当获取到键值数组后,所述转换子单元52利用所述键值与所述数值之间的映射关系将所述键值数组转换为所述数值的字符串,所述拼接子单元53用于将所述数值的字符串与服务器地址进行拼接获取所述第二网络请求信息;所述第二获取子单元54利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数。

具体地,所述转换子单元52利用objectatindex方法取出键值数组中的第一个键值key1,利用映射关系通过所述第一个键值key1从字典dict中取出第一个数值value1,然后将第一个键值key1和第一个数值value1拼接成一个新的字符串dictvaluestr1;依此类推,将所有的键值都转化为dictvaluestr类型的字符串,最后将所有dictvaluestr类型的字符串进行拼接,形成所述数值的字符串。

然后所述拼接子单元53将数值的字符串与服务器地址的path部分进行拼接形成第二网络请求信息sorturl;其中,所述第二网络请求信息其实也是一个url,但于所述第一网络请求信息不同;所述服务器地址包括:path部分和查询字符串query_string部分。例如,将dictvaluestr1、dictvaluestr2等字符串与http://服务器地址/api进行拼接即形成第二网络请求信息sorturl。所述http://服务器地址/api即为所述服务器地址的path部分。

当所述第二获取子单元54获取到第二网络请求信息sorturl后,利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数token。其中,所述对称加密算法可以是md5算法中的getnewtoken函数。所述第一接口参数为客户端计算得出的令牌token值。

这里,所述第二获取子单元54获取到第二网络请求信息sorturl后,利用对称加密算法从所述第二网络请求信息中获取所述第一接口参数token具体包括:

所述第二获取子单元54解析所述第二网络请求信息sorturl,获取服务器地址前半部分path部分及第一查询字符串query_string1;

将所述第一查询字符串query_string1中的参数按照预设的第二排序规则进行排序,然后将第一查询字符串query_string1中的参数按顺序插入“=”和“&”进行加密形成所述第二查询字符串query_string2。其中,所述第二排序规则可以是按照名称排序。

根据所述第二查询字符串query_string2生成第四网络请求信息;具体地,利用字符串拼接的方式,拼接服务器地址的前半部分path部分和第二查询字符串query_string2,并在path部分和第二查询字符串部分query_string2之间插入“?”进行加密,形成第四网络请求信息urll。

利用对称算法基于更新后的所述第四网络请求信息中的第二查询字符query_string2生成摘要信息digest;其中,所述摘要信息digest中第一个参数是私钥secret_key,第二个参数即为第四网络请求信息url1。其中,本实施例中的对称算法是hmac_sha1算法。

获取到摘要信息digest后,对所述摘要信息digest进行加密处理;具体地,对摘要信息digest进行base64编码处理,将编码处理后的摘要信息digest进行安全处理,比如将摘要信息digest中的字符“/”替换成“_”;将字符“+”替换成“-”;当然,这只是其中的一种替换方式,在此不做限定。

最后将预设密钥的明文信息access_key与加密处理后的摘要信息digest进行拼接,所述明文信息与加密处理后的摘要信息digest之间通过“:”连接,形成所述第一接口参数。

当所述第一生成单元42生成第一接口参数后,第二生成单元43用于根据所述第二网络请求信息及所述第一接口参数生成第三网络请求信息;具体地是将第一接口参数token拼接值所述第二网络请求信息sorturl之后,即形成所述第三网络请求信息tokenurl,其中,所述第三网络请求信息为统一资源定位符,且所述第一网络请求信息、所述第二网络请求信息及所述第三网络请求信息不同。

比如,所述第三网络请求信息tokenurl=http://服务器地址/api?e=14696&method=get-code&mobile=1355408****%%%%%&token=********************

所述发送单元44用于将所述第三网络请求信息发送至服务器,使得所述服务器能基于所述第三网络请求信息计算第二接口参数,并当确定所述第二接口参数及所述第一接口参数一致时,向所述客户端发送所述验证信息。

当所述服务器接收到第三网络请求信息tokenurl后,通过token关键字对所述第三网络请求信息tokenurl进行解析,获取第三网络请求信息tokenurl中token后的值,基于所述token后的值利用与客户端获取第一接口参数token同样的方法获取第二接口参数,并判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第一接口参数及所述第二接口参数一致时,向所述客户端发送所述验证信息。这里,所述第二接口参数是服务器计算出的令牌token值,因服务器获取第二接口参数token1与客户端获取第一接口参数token的过程一样,在此不再赘述。

并且,在向所述客户端发送验证信息时,为了避免频繁恶意发送,需要按照预设的发送次数进行发送。所述预设的发送次数可以根据实际场景进行设置,本实施例中设置的发送次数为10次。

本发明提供的一个或多个实施例带来的有益效果是:

本发明提供了一种发送验证信息的方法及系统,所述方法包括:客户端获取第一网络请求信息;根据所述第一网络请求信息生成第二网络请求信息及第一接口参数;所述第一网络请求信息与所述第二网络请求信息为统一资源定位符,且所述第一网络请求信息与所述第二网络请求信息不同;将所述第二网络请求信息及所述第一接口参数进行拼接生成第三网络请求信息;将所述第三网络请求信息发送至服务器,使得所述服务器能基于所述第三网络请求信息计算第二接口参数,并判断所述第一接口参数与所述第二接口参数是否一致,若确定所述第二接口参数及所述第一接口参数一致时,向所述客户端发送所述验证信息;所述第一接口参数与所述第二接口参数为令牌值;如此,即使用户利用脚本软件抓取并更换第一网络请求信息中的电话号码,也不能频繁或攻击性地向该电话号码发送验证信息,并且,由于预设有发送的次数,即使用户随便编造一个有效的手机号码,不停地进行接收验证信息,但只要超过预设的发送次数时,就会被服务器忽略,这样就降低了恶意重发验证信息的几率,并且也无需输入难以辨认的验证码进行验证,进而提高了用户的操作效率。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1