具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在......时”或“当......时”或“响应于确定”。
参见图1,为本申请实施例的数据调用场景示意图:
图1场景中包括:调用方和被调用方。其中,调用方可能是一个客户端、服务器端、或第三方支付平台;被调用方可能是另一客户端。
调用方在调用数据时,会先获取待调用数据对应的业务标识(Identification,ID),并将该业务ID添加到调用页面的设定位置中,以及根据设定规则生成与该业务ID对应的调用令牌,最后通过调用接口将调用页面和调用令牌发送至被调用方。
被调用方会接收到调用方传入的调用页面和接口参数后,会从调用页面中读取业务ID,以及从接口参数中提取出调用令牌,并根据设定规则生成业务ID对应的验证令牌,然后将调用方的调用令牌与本地生成的验证令牌进行匹配,若匹配成功,则获取业务ID对应的业务数据,并将业务数据送至调用方。
下面对本申请实施例进行详细说明。
参见图2,为本申请数据调用方法的一个实施例的流程图,该方法可以应用于被调用方上,比如:被调用方为客户端,可以包括以下步骤:
步骤210:接收调用方的调用请求,该调用请求携带有调用令牌以及待调用数据对应的业务ID。
本申请实施例中,调用方需要调用数据时,会提供一个调用页面,并将待调用数据对应的业务ID添加到调用页面。
其中,调用页面可以为超文本标记语言(Hyper Text Markup Language,HTML)页面。并且,调用方在将业务ID添加到HTML页面,且保证业务ID不在HTML页面中展示出来时,其采用的添加方式包括但不限于以下三种添加方式:
方式一:将业务ID添加到HTML页面的头(head)部分。其中,HTML页面head部分保证了业务ID不在HTML页面中展示出来。
比如:<head><appid>123</appid></head>。其中,appid用于表征业务ID。
方式二:将业务ID添加到HTML页面的属性(metal)标签中。其中,metal标签是HTML页面自带的一个标签,调用方可以在这个metal标签中添加一个名字(name)为业务ID的标签。
比如:<meta name="appid"content="123">。其中,appid用于表征业务ID。
方式三:将业务ID添加到HTML页面任意位置,并使用隐藏样式(style)来控制该业务ID不在HTML页面中展示出来。
比如:<appid style=”display:none”>123</appid>。其中,appid用于表征业务ID,display:none用于表征隐藏样式。
针对上述三种添加方式,调用方可以根据HTML页面特点选取一个添加方式进行添加。
另外,调用方需要调用数据时,还会提供一个调用令牌。并且,该调用令牌是调用方根据待调用数据对应的业务ID生成的,并用于被调用方进行验证。
在一个例子中,在执行步骤210时,可以包括:
(1)通过调用接口接收调用方传入的调用页面和接口参数,该调用页面为设定的HTML页面。其中,调用页面中隐藏着待调用数据对应的业务ID,接口参数包括调用方本地生成的调用令牌和业务参数。
(2)从调用页面中获取待调用数据对应的业务ID。
本申请实施例中,可以按照设定方式从调用页面中获取业务ID,该设定方式可以包括以下至少一种获取方式:
a:从调用页面的头部分获取业务ID;或
b:从调用页面的属性标签中获取业务ID;或
c:解除调用页面的隐藏样式,并从解除后的调用页面中获取业务ID。
上述设定方式可以是调用方和被调用方事先约定的方式。
另外,若按照设定方式没有获取到任何内容,则可以将该待调用数据对应的业务ID设置为空。
(3)从接口参数中获取调用令牌。
(4)从接口参数中获取调用令牌。
步骤220:根据设定规则生成业务ID对应的验证令牌。
本申请实施例中,被调用方接收到调用方的调用页面和调用令牌后,会从对调用令牌进行验证,其采用的验证方式是:被调用方根据待调用数据对应的业务ID生成一个验证令牌,并将调用令牌与验证令牌匹配进行匹配,若匹配成功,才允许调用方调用数据。
在一个例子中,根据设定规则生成验证令牌时,除了需要业务ID,还需要调用页面的URL地址和业务参数,这样可以提高数据调用的安全性,其过程可以包括:
(1)获取调用页面的URL地址。其中,URL地址作为验证令牌要素之一,从而实现了从页面地址的角度,对数据调用进行了限制。
(2)从接口参数中提取出业务参数。其中,业务参数作为验证令牌要素之一,从而实现了从数据访问的范围上,对数据调用进行了限制。
(3)利用设定加密算法对待调用数据对应的业务ID、调用页面的URL地址、以及接口参数中的业务参数进行加密,得到验证令牌。其中,业务ID作为验证令牌要素之一,从而实现了从页面内容的角度,对数据调用进行了限制。
本申请实施例中,设定加密算法可以为消息摘要算法第五版(MessageDigest Algorithm,MD5)。并且,在加密之前,可以先将业务ID、调用页面的URL地址、以及业务参数按照特定顺序和特定的分隔符组成一个完整的字符串,然后利用设定加密算法计算出对应的验证令牌。
另一个例子中,在生成验证令牌时,还可以控制令牌生成器利用设定加密算法对待调用数据对应的业务ID、调用页面的URL地址、以及接口参数中的业务参数进行加密,得到验证令牌。其中,设定加密算法也可以为MD5。
步骤230:将调用令牌与验证令牌匹配进行匹配,得到匹配结果。
本申请实施例中,匹配结果可以包括匹配成功和匹配失败。并且,匹配成功的判断原则是:调用令牌与验证令牌均不能为空,且调用令牌与验证令牌必须相同。其中,确定调用令牌与验证令牌相同时,需要同时满足二者的字符串内容相同、字符串大小写相同、字符串排列顺序相同、以及字符串长度相同等条件。
在一个例子中,调用令牌与验证令牌匹配的匹配过程可以包括:
(1)判断调用令牌和验证令牌中至少一个是否为空。若调用令牌和验证令牌均不为空,则执行(2);若调用令牌和验证令牌中至少一个为空,则执行(4)。
(2)判断调用令牌和验证令牌是否相同。若调用令牌和验证令牌相同,则执行(3);若调用令牌和所述验证令牌不同,则执行(4)。
其中,判定调用令牌和验证令牌相同时,需要保证二者的字符串内容相同、字符串大小写相同、字符串排列顺序相同、以及字符串长度相同。
(3)确定匹配结果为匹配成功,流程结束。
(4)确定匹配结果为匹配失败,流程结束。
步骤240:若匹配结果为匹配成功,则执行调用业务ID对应的业务数据。
本申请实施例中,若匹配结果为匹配成功,则允许调用方的数据调用,并执行调用业务ID对应的业务数据,并将业务数据送至调用方;若匹配结果为匹配失败,则拒绝调用方的数据调用,并可以向调用方返回错误码。
由上述实施例可见,通过接收调用方的调用请求,该调用请求携带有调用令牌以及待调用数据对应的业务ID,根据设定规则生成业务ID对应的验证令牌,将调用令牌与验证令牌进行匹配,得到匹配结果,若匹配结果为匹配成功,则执行调用所述业务ID对应的业务数据,使得被调用方利用验证令牌替换了白名单,成功避免了利用白名单时容易存在的域名劫持和钓鱼网站的风险,还提高了数据调用的伪造难度,进而提高了数据调用的安全性和可靠性。
参见图3,为本申请数据调用方法的一个实施例的流程图,该方法可以应用于调用方上,比如:调用方为一个客户端、服务器端、或第三方支付平台,可以包括以下步骤:
步骤310:获取待调用数据对应的业务ID。
步骤320:将业务ID添加到调用页面中。其中,调用页面可以为HTML5页面。
本申请实施例中,调用方在将业务ID添加到调用页面,且保证业务ID不在调用页面中展示出来时,其采用的添加方式包括但不限于以下三种添加方式:
方式一:将业务ID添加到调用页面的头(head)部分。
方式二:将业务ID添加到调用页面的属性(metal)标签中。
方式三:将业务ID添加到调用页面任意位置,并使用隐藏样式(style)来控制该业务ID不在调用页面中展示出来。
针对上述三种添加方式,调用方可以根据调用页面的页面特点选取一个添加方式进行添加。
另外,调用方需要调用数据时,还会提供一个调用令牌。并且,该调用令牌是调用方根据待调用数据对应的业务ID生成的,并用于被调用方进行验证。
步骤330:根据设定规则生成业务ID对应的调用令牌。
本申请实施例中,调用方需要调用数据时,需要提供一个调用令牌。并且,该调用令牌是调用方根据待调用数据对应的业务ID生成的,并用于被调用方进行验证。
在一个例子中,根据设定规则生成调用令牌时,需要业务ID,调用页面的URL地址、以及业务参数这三个要素,其过程可以包括:
(1)获取调用页面的URL地址。其中,URL地址作为调用令牌要素之一,从而实现了从页面地址的角度,对数据调用进行了限制。
(2)获取业务ID对应的业务参数。其中,业务参数作为调用令牌要素之一,从而实现了从数据访问的范围上,对数据调用进行了限制。
(3)利用设定加密算法对待调用数据对应的业务ID、调用页面的URL地址、以及接口参数中的业务参数进行加密,得到调用令牌。其中,业务ID作为调用令牌要素之一,从而实现了从页面内容的角度,对数据调用进行了限制。
本申请实施例中,设定加密算法可以为MD5。并且,在加密之前,可以先将业务ID、调用页面的URL地址、以及业务参数按照特定顺序和特定的分隔符组成一个完整的字符串,然后利用设定加密算法计算出对应的调用令牌。
步骤340:将携带有业务ID以及调用令牌的调用请求发送至被调用方。
本申请实施例中,调用方需要调用数据时,不仅需要提供一个携带有业务ID的调用页面,还需要一个调用令牌。并用于被调用方进行验证。
在一个例子中,在执行步骤340时,可以包括:
(1)将业务参数和调用令牌组成接口参数。
(2)通过调用接口将携带有业务ID的调用页面和接口参数上传至被调用方。
由上述实施例可见,通过获取待调用数据对应的业务ID,将业务ID添加到调用页面中,根据设定规则生成业务ID对应的调用令牌,将携带有业务ID以及调用令牌的调用请求发送至被调用方,从而提高了数据调用的安全性和可靠性。
与本申请数据调用方法的实施例相对应,本申请还提供了数据调用装置的实施例。
本申请数据调用装置的实施例可以应用在被调用方上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请数据调用装置所在设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,如对于终端来说,可能包括摄像头、触摸屏子、通信组件等,对于服务器来说,可能包括负责处理报文的转发芯片等等。
本申请另一数据调用装置的实施例可以应用在调用方上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请数据调用装置所在设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,如对于终端来说,可能包括摄像头、触摸屏子、通信组件等,对于服务器来说,可能包括负责处理报文的转发芯片等等。
参见图6,为本申请数据调用装置的一个实施例框图,该数据调用装置可以应用在被调用方上,比如:被调用方为客户端,并可以用于执行图2所示的数据调用方法,该装置可以包括:接收单元61、生成单元62、匹配单元63和发送单元64。
接收单元61,用于接收调用方的调用请求,所述调用请求携带有调用令牌以及待调用数据对应的业务ID;
生成单元62,用于根据设定规则生成所述业务ID对应的验证令牌;
匹配单元63,用于将所述调用令牌与所述验证令牌匹配进行匹配,得到匹配结果;
执行单元64,用于若所述匹配结果为匹配成功,则执行调用所述业务ID对应的业务数据。
在一个可选的实现方式中:所述接收单元61可以包括:接收子单元、第一获取子单元和第二获取子单元(图6中未示出)。
接收子单元,用于通过调用接口接收所述调用方传入的调用页面和接口参数,所述接口参数包括调用令牌;
第一获取子单元,用于从所述调用页面中获取所述业务ID;
第二获取子单元,用于从所述接口参数中获取所述调用令牌。
在另一个可选的实现方式中:所述第一获取子单元可以包括:获取模块(图6中未示出)。
获取模块,用于按照设定方式从所述调用页面中获取所述业务ID,所述设定方式包括以下至少一种获取方式:
从所述调用页面的头部分获取所述业务ID;或
从所述调用页面的属性标签中获取所述业务ID;或
解除所述调用页面的隐藏样式,并从解除后的调用页面中获取所述业务ID。
在另一个可选的实现方式中:所述接口参数还包括业务参数;所述生成单元62可以包括:第三获取子单元、提取子单元和加密子单元(图6中未示出)。
第三获取子单元,用于获取所述调用页面的统一资源定位符URL地址;
提取子单元,用于从所述接口参数中提取出业务参数;
加密子单元,用于利用设定加密算法对所述业务ID、所述URL地址、以及所述业务参数进行加密,得到所述验证令牌。
在另一个可选的实现方式中:所述加密子单元可以包括:控制模块(图6中未示出)。
控制模块,用于控制令牌生成器利用设定加密算法对所述业务ID、所述URL地址、以及所述业务参数进行加密,得到所述验证令牌。
在另一个可选的实现方式中:所述设定加密算法可以为MD5。
参见图7,为本申请数据调用装置的一个实施例框图,该数据调用装置可以应用于调用方上,比如:调用方为一个客户端、服务器端、或第三方支付平台,并可以用于执行图3所示的数据调用方法,该装置可以包括:获取单元71、添加单元72、生成单元73和发送单元74。
获取单元71,用于获取待调用数据对应的业务标识ID;
添加单元72,用于将所述业务ID添加到调用页面中;
生成单元73,用于根据设定规则生成所述业务ID对应的调用令牌;
发送单元74,用于将携带有所述业务ID的调用页面和所述调用令牌发送至被调用方。
在一个可选的实现方式中:所述添加单元72可以包括:添加子单元(图7中未示出)。
添加子单元,用于按照设定方式将所述业务ID添加到调用页面中,所述设定方式包括以下任一种添加方式:
将所述业务ID添加到所述调用页面的头部分;或
将所述业务ID添加到从所述调用页面的属性标签中;或
将所述业务ID添加到从所述调用页面的任意位置,并设置携带有所述业务ID的调用页面为隐藏样式。
在另一个可选的实现方式中:所述生成单元73可以包括:第一获取子单元、第二获取子单元和加密子单元(图7中未示出)。
第一获取子单元,用于获取所述调用页面的统一资源定位符URL地址;
第二获取子单元,用于获取所述业务ID对应的业务参数;
加密子单元,用于利用设定加密算法对所述业务ID、所述URL地址、以及所述业务参数进行加密,得到所述调用令牌。
在另一个可选的实现方式中:所述发送单元74可以包括:组成子单元和上传子单元(图7中未示出)。
组成子单元,用于将所述业务参数和所述调用令牌组成接口参数;
上传子单元,用于通过调用接口将携带有所述业务ID的调用页面和所述接口参数上传至被调用方。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本请求方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
与图6相对应,本申请实施例还提供了一种数据调用装置,所述装置可以应用于被调用方上,比如:被调用方为客户端,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收调用方的调用请求,所述调用请求携带有调用令牌以及待调用数据对应的业务标识ID;
根据设定规则生成所述业务ID对应的验证令牌;
将所述调用令牌与所述验证令牌匹配进行匹配,得到匹配结果;
若所述匹配结果为匹配成功,则执行调用所述业务ID对应的业务数据。
由上述实施例可见,通过接收调用方的调用请求,该调用请求携带有调用令牌以及待调用数据对应的业务ID,根据设定规则生成业务ID对应的验证令牌,将调用令牌与验证令牌进行匹配,得到匹配结果,若匹配结果为匹配成功,则执行调用所述业务ID对应的业务数据,使得被调用方利用验证令牌替换了白名单,成功避免了利用白名单时容易存在的域名劫持和钓鱼网站的风险,还提高了数据调用的伪造难度,进而提高了数据调用的安全性和可靠性。
与图7相对应,本申请实施例还提供了一种数据调用装置,所述装置可以调用方上,比如:调用方为一个客户端、服务器端、或第三方支付平台,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取待调用数据对应的业务标识ID;
将所述业务ID添加到调用页面中;
根据设定规则生成所述业务ID对应的调用令牌;
将携带有所述业务ID以及所述调用令牌的调用请求发送至被调用方。
由上述实施例可见,通过获取待调用数据对应的业务ID,将业务ID添加到调用页面中,根据设定规则生成业务ID对应的调用令牌,将携带有业务ID以及调用令牌的调用请求发送至被调用方,从而提高了数据调用的安全性和可靠性。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。