基于API接口的防刷方法及装置
文献发布时间:2023-06-19 11:05:16
技术领域
本发明涉及通信技术领域,尤其涉及一种基于API接口的防刷方法及装置。
背景技术
如今,互联网已成为人们生活中不可或缺的工具,各行各业都在进行电子化,网络服务的本质是各种后台API接口提供的功能,于是就出现了越来越多的恶意用户和不法分子为了实现非法获利或其他目的对API接口进行攻击和破解,所以现在对API接口服务的安全性要求越来越高。
现有技术中针对上述问题,常用处理方案如下:
1)通过后台接口访问次数控制及黑名单过滤的方法屏蔽非法请求。
2)通过时间戳+随机数+参数签名的方式防止抓包复制请求参数或数据篡改。
方案1)仍旧无法解决恶意用户可随意伪造多个账号信息直接轮询攻击服务的问题。
方案2)缺少对短时间大批量接口访问的限制,可能因为短时间内并发请求超过系统最大处理能力而导致系统瘫痪,也没有对恶意用户的访问的限制。
发明内容
本发明提供的基于API接口的防刷方法及装置,用于克服现有技术中存在的上述问题,能够通过对用户的上下文访问控制,有效防范恶意用户的非法调用,大幅提高后台服务的安全性。
本发明提供的一种基于API接口的防刷方法,包括:
根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的API接口调用请求进行校验;
若校验失败,则拒绝所述用户的API接口调用请求。
根据本发明提供的一种基于API接口的防刷方法,
所述API接口预设访问顺序通过如下方式确定:
根据与所述API接口对应的Web页面类型和Web页面层次关系对所有API接口进行顺序标注,以获取所述API接口预设访问顺序。
根据本发明提供的一种基于API接口的防刷方法,在所述根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的API接口调用请求进行校验之前,包括:
对所述用户进行身份认证,并在身份认证通过后,对所述用户的API接口调用请求的参数进行校验;
若校验通过,则将所述用户调用的API接口的访问顺序与所述API接口预设访问顺序进行匹配。
根据本发明提供的一种基于API接口的防刷方法,还包括:
根据所述匹配结果,对用户的当前信用分进行更新;
若确定更新后的用户的信用分低于预设信用分阈值,则将所述用户加入黑名单,并拒绝黑名单用户的API接口调用请求。
根据本发明提供的一种基于API接口的防刷方法,所述对用户的当前信用分进行更新,包括:
若匹配结果表明,所述用户调用的API接口的访问顺序为非法访问,则将所述用户的当前信用分减去第一预设值,以对所述用户的当前信用分进行更新;
若匹配结果表明,所述用户调用的API接口的访问顺序为合法访问,则将所述用户的当前信用分增加第二预设值,以对所述用户的当前信用分进行更新。
根据本发明提供的一种基于API接口的防刷方法,所述对所述用户的API接口调用请求的参数进行校验,包括:
对所述用户的API接口调用请求的如下参数中的至少一种进行校验:
入参参数、客户端IP地址、预设时间段内次数和频率以及用户身份标识。
本发明还提供一种基于API接口的防刷装置,包括:校验模块以及第一授权模块;
所述校验模块,用于根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的API接口调用请求进行校验;
所述第一授权模块,用于若校验失败,则拒绝所述用户的API接口调用请求。
根据本发明提供的一种基于API接口的防刷装置,还包括:
第二授权模块,用于根据所述匹配结果,对用户的当前信用分进行更新;
若确定更新后的用户的信用分低于预设信用分阈值,则将所述用户加入黑名单,并拒绝黑名单用户的API接口调用请求。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于API接口的防刷方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于API接口的防刷方法的步骤。
本发明提供的基于API接口的防刷方法及装置,通过基于用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,实现对用户的上下文访问控制,能够有效防范恶意用户的非法调用,大幅提高后台服务的安全性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于API接口的防刷方法的流程示意图;
图2是本发明提供的基于API接口的防刷装置的结构示意图;
图3是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明提供的基于API接口的防刷方法的流程示意图,如图1所示,方法包括:
S1、根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的API接口调用请求进行校验;
S2、若校验失败,则拒绝用户的API接口调用请求。
需要说明的是,上述方法的执行主体可以是电子设备、电子设备中的部件、集成电路、或芯片。该电子设备可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,非移动电子设备可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本发明对此不作具体限定。
下面以Web服务器执行本发明提供的基于API接口的防刷方法为例,详细说明本发明的技术方案。
Web API是网络应用程序接口,Web API包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务等能力,利用这些能力可以进行开发出强大功能的web应用。
web计算平台包含了广泛的功能,其中的大部分均可以通过API(应用程序编程接口)接口访问。
用户通过调用对应的后台API接口访问Web页面,Web服务器根据用户发送的API接口调用请求对用户访问Web页面请求进行响应。具体地,根据用户调用的API接口的访问顺序与API接口预设访问顺序进行匹配,并根据匹配结果,对用户的API接口调用请求进行校验。其中,API接口预设访问顺序可以预先存储在后台服务器中。
本发明中的用户调用的API接口的访问顺序可以从存储在管理Web网站的网站服务器日志中获取,具体地:管理Web网站实时监视Web的速度和Web的内容传送。管理Web网站不仅要关注服务器每天的吞吐量,还要了解这些Web网站的外来访问,了解网站各页面的访问情况。根据各页面的点击频率来改善网页的内容和质量,提高内容的可读性,以及跟踪包含有商业交易的步骤及管理Web网站“幕后”的数据等。
网站服务器日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对日志进行统计、分析和综合,就能有效地掌握服务器的运行状况、发现和排除错误原因、了解客户访问分布等,更好地加强系统的维护和管理。
用户客户端(浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(用户向Web服务器发送API接口调用请求)。根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型、请求的URL等一系列信息。
Web服务器收到请求后,将客户端要求的页面内容返回到客户端。如果出现错误,那么返回错误代码。
服务器端将访问信息和错误信息记录到网站服务器日志文件里,通过统计分析可以得到用户调用的API接口的访问顺序,其中,本发明中对网站服务器日志文件的统计分析可以采用实时处理的方式或离线处理的方式。
将得到的用户调用的API接口的访问顺序与API接口预设访问顺序进行匹配,以对用户的API接口调用请求进行校验,若校验结果表明,用户调用的API接口的访问顺序与API接口预设访问顺序不一致,则判定检验失败,服务器拒绝用户的API接口调用请求,拒绝为该用户提供服务。
若校验结果表明,用户调用的API接口的访问顺序与API接口预设访问顺序一致,则判定检验成功,服务器响应用户的API接口调用请求,为该用户提供服务。
本发明提供的基于API接口的防刷方法,通过基于用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,实现对用户的上下文访问控制,能够有效防范恶意用户的非法调用,大幅提高后台服务的安全性。
进一步地,在一个实施例中,步骤S1中API接口预设访问顺序通过如下方式确定:
根据与API接口对应的Web页面类型和Web页面层次关系对所有API接口进行顺序标注,以获取API接口预设访问顺序。
具体地,根据Web页面类型和Web页面层次关系对后台对应的API接口进行顺序标注,根据顺序标注结果得到API接口预设访问顺序。
例如,存在如下Web页面:
营销页(包含活动规则和商品列表);
商品a详情页;
商品b详情页;
商品c详情页;
秒杀抢购页;
支付页;
支付完成页;
根据Web页面类型可将上述Web页面划分为5类,第一类:营销页;第二类:商品a详情页、商品b详情页及商品c详情页;第三类:秒杀抢购页;第四类:支付页;第五类:支付完成页;根据Web页面层次关系将上述Web页面进行分层,第一层:营销页;第二层:商品a详情页、商品b详情页及商品c详情页;第三层:秒杀抢购页;第四层:支付页;第五层:支付完成页;对上述Web页面进行顺序标注,具体地,可以使用文本(例如数字、字符等)对Web页面进行顺序标注,对属于不同类型不用层次的Web页面使用不同的数字进行标注,对属于不同类型同一层次的Web页面使用同一数字,并在数字后面附加字符的形式进行区分,例如:
1-营销页(包含活动规则和商品列表);
2a-商品a详情页;
2b-商品b详情页;
2c-商品c详情页;
3-秒杀抢购页;
4-支付页;
5-支付完成页。
本发明提供的基于API接口的防刷方法,通过对用户访问Web页面的访问顺序进行标注,能够确保用户按照API接口预设访问顺序进行页面访问,有效屏蔽了恶意用户的非法访问请求,实现了针对API接口的安全防刷。
进一步地,在一个实施例中,在步骤S1之前,还可以具体包括:
S0、对用户进行身份认证,并在身份认证通过后,对用户的API接口调用请求的参数进行校验;
若校验通过,则将用户调用的API接口的访问顺序与API接口预设访问顺序进行匹配。
进一步地,在一个实施例中,步骤S0中对用户的API接口调用请求的参数进行校验,包括:
S01、对用户的API接口调用请求的如下参数中的至少一种进行校验:
入参参数、客户端IP地址、预设时间段内次数和频率以及用户身份标识。
可选地,对用户进行身份认证,包括微信页面授权认证、手机号认证、OAuth2.0认证等。
具体地,微信页面授权认证是通过OAuth2.0机制实现的,在用户授权给某一Web页面后,该Web页面可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息。
手机号认证是通过对比用户访问Web页面时的手机号与Web服务器中存储的用户注册信息(包括用户的手机号),对用户进行身份认证,若Web服务器中未存储该手机号,则确定该用户为恶意用户,拦截用户的API接口调用请求。
OAuth2.0认证包括授权码模式(Authorization Code)、简化模式(Implicit)、密码模式(Resource owner password credentials)及客户端模式(Client credentials)几种访问模式。
假设我们的网站有一个功能是同步用户在Github的所有仓库。对接Oauth2.0流程为:
在Github的OAuth页面上注册网站信息;
用户点击网站上的“同步Github仓库”按钮,开始OAuth认证流程;
浏览器弹出Github认证窗口,询问“是否允许网站XXX的访问”,用户点击“允许”;
Github得知用户点了“允许”后,生成授权码(Authorization Code),并将用户重定向到我们的网站里,网站后台收到授权码后,向Github请求access_token;
网站后台从Github收到access_token,接着向Github拉取该用户所有的仓库。
若用户通过身份认证后,进一步对用户的API接口调用请求的参数进行校验,包括对用户的API接口调用请求的入参参数、客户端IP地址、预设时间段内次数和频率以及用户身份标识进行校验。
具体地,在设计API时,对安全性有要求的情况下经常需要要求校验参数,或者需要防止代码入侵,需要对接口中的参数进行验证,基于此,往往需要对用户调用API接口请求时入参参数进行校验,例如:
假设有一个接口:https://xxx.com/u/Token,API接口调用请求为http://xxx.com/u/Token?ID=111&UserPhone=15099999999&Sign=a4a2a2ad411c81a403e586619182e080;
其中ID和UserPhone为有价值参数,注意到这里有个Sign参数,这就是我们这个方式的核心,我们可以通过对传输的所有入参参数按照传输顺序组成字符串再添加一个约定加密key组成一个字符串再进行md5讯息摘要演算法或者sha1安全散列算法等不可逆加密生成一个Sign字符串添加到最后。每次对API接口调用请求处理之前都先检验生成的Sign与入参参数中的Sign是否一致,若不一致则拒绝请求。
对客户端IP地址进行校验包括:将用户发送API接口调用请求时携带的客户端IP地址与Web服务器存储的客户端白名单的IP地址进行对比,以对客户端IP地址进行校验,判断用户客户端IP地址是否合法。
对预设时间段内API接口调用请求的次数和频率进行校验包括:基于设置单位时间内同一个API接口访问请求的连接次数阀值进行防刷判定,若判断在单位时间内同一个API接口的访问次数超出设定的连接次数阀值,对于超出连接次数阀值的接口访问请求回复拒绝,而对未超出连接次数阀值的接口访问请求正常执行连接。
对用户身份标识进行校验包括:对用户发送API接口调用请求时携带的用户身份标识(如用户ID)进行校验,对于不属于黑名单用户发送的API接口调用请求正常执行连接。
本发明提供的基于API接口的防刷方法,通过对用户身份认证及对用户的API接口调用请求的参数校验,可以有效地识别非法请求,并针对非法请求的来源做出访问频次限制和直接拒绝的快速响应,能够确保其他合法用户的正常调用访问。
进一步地,在一个实施例中,所述方法,还包括:
S3、根据匹配结果,对用户的当前信用分进行更新;
若确定更新后的用户的信用分低于预设信用分阈值,则将用户加入黑名单,并拒绝黑名单用户的API接口调用请求。
具体地,根据将用户调用的API接口的访问顺序与API接口预设访问顺序进行匹配后得到的匹配结果,对用户的当前信用分进行更新,其中,对于新注册用户的当前信用分,采用由服务器同一设置初始信用分作为各个新注册用户的当前信用分,并根据用户的Web页面访问轨迹实时更新用户的当前信用分。
对于信用分较高的用户可适当放宽和减少风控校验,当用户的信用分低于预设信用分阈值时,则永久拉黑。例如,对于信用分较高的用户发送的API接口调用请求进行参数校验时,从上述参数校验中择一进行校;而对于信用分较低的用户发送的API接口调用请求进行参数校验时,无论是用户访问哪个Web页面或API接口,均无法通过上述参数校验,只会收到服务器反馈的错误连接提示。
此外,用户的信用分可用于多次营销活动,也可用于其他业务或系统的判断依据。
本发明提供的基于API接口的防刷方法,通过为新用户设置信用分,并根据用户的页面访问轨迹实时更新用户的信用分,将信用分低于一定程度的用户加入黑名单,通过拒绝黑名单用户的API接口调用请求,有效实现对恶意用户的安全防刷。
进一步地,在一个实施例中,步骤S3中对用户的当前信用分进行更新,包括:
S31、若匹配结果表明,用户调用的API接口的访问顺序为非法访问,则将用户的当前信用分减去第一预设值,以对用户的当前信用分进行更新;
S32、若匹配结果表明,用户调用的API接口的访问顺序为合法访问,则将用户的当前信用分增加第二预设值,以对用户的当前信用分进行更新。
具体地,若得到的匹配结果表明,用户调用的API接口的访问顺序为非法访问,则将用户的当前信用分减去第一预设值,对用户的当前信用分进行更新;
若得到的匹配结果表明,用户调用的API接口的访问顺序为合法访问,则将用户的当前信用分增加第二预设值,对用户的当前信用分进行更新。
本发明中,第一预设值及第二预设值可以根据用户实际的Web页面访问轨迹设置,其中,根据用户的Web页面访问轨迹,第一预设值和第二预设值取值并不唯一。
例如,当用户在访问如下Web页面时:
1-营销页(包含活动规则和商品列表);
2a-商品a详情页;
2b-商品b详情页;
2c-商品c详情页;
3-秒杀抢购页;
4-支付页;
5-支付完成页。
用户访问Web页面顺序为:1,3。确定用户调用的API接口的访问顺序为非法访问(跨层访问),将用户的当期信用分减去第一预设值,如信用分-1;
用户访问Web页面顺序:1,2a,2b。确定用户调用的API接口的访问顺序为非法访问(同层互斥访问),将用户的当前信用分-1;
用户访问Web页面顺序:1,2a,3,5。确定用户调用的API接口的访问顺序为非法访问(跨层访问),将用户的当前信用分-1;
用户访问Web页面顺序:4,5。确定用户调用的API接口的访问顺序为非法访问(跨层访问),将用户的当前信用分-1;
用户访问Web页面顺序:1,2a,1,2b,3,4,5。确定用户调用的API接口的访问顺序为合法访问(浏览多个商品后支付成功),信用分+2;
用户访问Web页面顺序:1,2b,3,4,3,2b,1,2a。确定用户调用的API接口的访问顺序为合法访问(用户放弃支付后浏览其它商品),信用分+1。
本发明提供的基于API接口的防刷方法,通过根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的信用分进行更新,形成用户画像,可极其精准的识别恶意用户,放行正常用户,大幅提高风控精准度。
下面对本发明提供的基于API接口的防刷装置进行描述,下文描述的基于API接口的防刷装置与上文描述的基于API接口的防刷方法可相互对应参照。
图2是本发明提供的基于API接口的防刷装置的结构示意图,如图2所示,包括:校验模块210以及第一授权模块220;
校验模块210,用于根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的API接口调用请求进行校验;
第一授权模块220,用于若校验失败,则拒绝用户的API接口调用请求。
本发明提供的基于API接口的防刷装置,通过基于用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,实现对用户的上下文访问控制,能够有效防范恶意用户的非法调用,大幅提高后台服务的安全性。进一步地,在一个实施例中,所述装置还包括:
第二授权模块230,用于根据匹配结果,对用户的当前信用分进行更新;
若确定更新后的用户的信用分低于预设信用分阈值,则将用户加入黑名单,并拒绝黑名单用户的API接口调用请求。
本发明提供的基于API接口的防刷装置,通过根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的信用分进行更新,形成用户画像,可极其精准的识别恶意用户,放行正常用户,大幅提高风控精准度。
图3是本发明提供的一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(communication interface)311、存储器(memory)312和总线(bus)313,其中,处理器310,通信接口311,存储器312通过总线313完成相互间的通信。处理器310可以调用存储器312中的逻辑指令,以执行如下方法:
根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的API接口调用请求进行校验;
若校验失败,则拒绝用户的API接口调用请求。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机电源屏(可以是个人计算机,服务器,或者网络电源屏等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
进一步地,本发明公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的基于API接口的防刷方法,例如包括:
根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的API接口调用请求进行校验;
若校验失败,则拒绝用户的API接口调用请求。
另一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的基于API接口的防刷方法,例如包括:
根据用户调用的API接口的访问顺序与API接口预设访问顺序的匹配结果,对用户的API接口调用请求进行校验;
若校验失败,则拒绝用户的API接口调用请求。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机电源屏(可以是个人计算机,服务器,或者网络电源屏等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
- 基于API接口的防刷方法及装置
- 一种Web Api接口的防刷方法