买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:腾讯科技(深圳)有限公司
摘要:本发明实施例公开了一种应用程序接口攻击检测方法、装置以及可读存储介质,该应用程序接口攻击检测方法包括:获取客户端发送的API请求中的第一输入参数;将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,所述安全检测结果用于指示所述第一输入参数检测通过或者检测不通过;若所述安全检测结果指示所述第一输入参数检测不通过,对所述客户端执行安全处理策略。采用本发明实施例,可以提升对于API数据安全的保护能力,提高API的安全性。
主权项:1.一种应用程序接口API攻击检测方法,应用于服务器,其特征在于,包括:获取客户端发送的API请求中的第一输入参数;将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,所述安全检测结果用于指示所述第一输入参数检测通过或者检测不通过;若所述安全检测结果指示所述第一输入参数检测不通过,对所述客户端执行安全处理策略;其中,所述第一输入参数包括N个输入参数,N为大于等于2的整数;所述将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,包括:确定所述N个输入参数中请求频次小于或等于第三阈值的多个输入参数,所述第三阈值为所述合法API请求中的输入参数的请求频次;将所述多个输入参数按照由大到小或由小到大的顺序进行排序;确定排序后的所述多个输入参数中每两个相邻输入参数的差值;判断所述多个输入参数中相邻两个输入参数的差值的频次是否大于或等于第四阈值;若所述多个输入参数中相邻两个输入参数的差值的频次大于或等于所述第四阈值,则所述安全检测结果指示所述第一输入参数检测不通过。
全文数据:应用程序接口攻击检测方法、装置以及可读存储介质技术领域本发明涉及互联网技术领域,尤其涉及基于应用程序接口攻击检测方法、装置以及可读存储介质。背景技术随着大数据时代的来临,许多公司的业务开始逐渐部署在云端,应用服务化已成为一种趋势。在越来越多的场景中的应用架构采用应用程序接口applicationprogramminginterface,API作为应用间数据传输和控制流程,与此同时API接口负责传输数据的数据量以及敏感性也在增加。为避免攻击者通过API接口获取敏感数据如用户身份信息,现有的方案是通过以中间件或代理的方式,将原本发送到API接口的请求发送到应用程序接口管理平台applicationprogramminginterfacemanager,APIM上,通过APIM平台对用户凭证进行身份校验与权限鉴定,然后再将符合要求的请求转发至原先的API接口地址,最后将返回的数据重新发送给请求方,完成一次API接口调用。通过这种方法统一管理API接口,预防API攻击。现有这种方案无法在用户凭证遭到泄露的情况防护API接口安全,而且在一些内网环境中,由于开发人员安全意识不足与接口调试过程中的便捷性,很多API接口并不会接入APIM平台,从而也不可避免的存在被攻击者利用的可能。因此,如何提升对于API数据安全的保护能力是目前亟需解决的技术问题。发明内容本发明实施例提供一种应用程序接口攻击检测方法、装置以及可读存储介质,可以提升对于API数据安全的保护能力,提高API的安全性。本发明实施例一方面提供了一种应用程序接口API攻击检测,该方法应用于服务器,包括:获取客户端发送的API请求中的第一输入参数;将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,所述安全检测结果用于指示所述第一输入参数检测通过或者检测不通过;若所述安全检测结果指示所述第一输入参数检测不通过,对所述客户端执行安全处理策略。其中,所述将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,包括:判断所述第一输入参数中是否包括预设黑特征;若所述第一输入参数中包括所述预设黑特征,对所述第一输入参数进行语句结构拆分;判断所述第一输入参数进行语句结构拆分后的分支结构数是否不等于第一阈值,所述第一阈值为所述合法API请求的输入参数的分支结构数;若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。其中,所述判断所述第一输入参数进行语句结构拆分后的分支结构数是否不等于第一阈值之后,还包括:若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,判断所述第一输入参数的长度是否大于或等于第二阈值;若所述第一输入参数的长度大于或等于所述第二阈值,则所述安全检测结果指示所述第一输入参数检测不通过。其中,所述第一输入参数包括N个输入参数,N为大于等于2的整数;所述将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,包括:确定所述N个输入参数中请求频次小于或等于第三阈值的多个输入参数,所述第三阈值为所述合法API请求中的输入参数的请求频次;将所述多个输入参数按照由大到小或由小到大的顺序进行排序;确定排序后的所述多个输入参数中每两个相邻输入参数的差值;判断所述多个输入参数中相邻两个输入参数的差值的频次是否大于或等于第四阈值;若所述多个输入参数中相邻两个输入参数的差值的频次大于或等于所述第四阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。其中,所述方法还包括:若所述安全检测结果指示所述第一输入参数检测不通过,向安全运维平台或管理员发送告警信息,所述告警信息包括告警事件标识、所述客户端的标识信息、所述第一输入参数或所述客户端发送所述API请求的时间信息中的一项或多项。本发明实施例一方面提供了一种应用程序接口API攻击检测装置,包括:获取单元,用于获取客户端发送的API请求中的第一输入参数;检测单元,用于将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,所述安全检测结果用于指示所述第一输入参数检测通过或者检测不通过;安全处理单元,用于若所述安全检测结果指示所述第一输入参数检测不通过,对所述客户端执行安全处理策略。其中,所述检测单元,包括:第一判断单元,用于判断所述第一输入参数中是否包括预设黑特征;拆分单元,用于若所述第一输入参数中包括所述预设黑特征,对所述第一输入参数进行语句结构拆分;第二判断单元,用于判断所述第一输入参数进行语句结构拆分后的分支结构数是否不等于第一阈值,所述第一阈值为所述合法API请求的输入参数的分支结构数;若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。其中,所述检测单元还包括:第三判断单元,用于若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,判断所述第一输入参数的长度是否大于或等于第二阈值;若所述第一输入参数的长度大于或等于所述第二阈值,则所述安全检测结果指示所述第一输入参数检测不通过。其中,所述第一输入参数包括N个输入参数,N为大于等于2的整数;所述检测单元,包括:第一确定单元,用于确定所述N个输入参数中请求频次小于或等于第三阈值的多个输入参数;排序单元,用于将所述多个输入参数按照由大到小或由小到大的顺序进行排序;第二确定单元,用于确定排序后的所述多个输入参数中每两个相邻输入参数的差值;第四判断单元,用于判断所述多个输入参数中相邻两个输入参数的差值的频次是否大于或等于第四阈值;若所述多个输入参数中相邻两个输入参数的差值的频次大于或等于所述第四阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。其中,所述装置还包括:发送单元,用于若所述安全检测结果指示所述第一输入参数检测不通过,向安全运维平台或管理员发送告警信息,所述告警信息包括告警事件标识、所述客户端的标识信息、所述第一输入参数或所述客户端发送所述API请求的时间信息中的一项或多项。本发明实施例一方面提供了一种应用程序接口API攻击检测装置,包括:处理器和存储器;所述处理器和存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如本发明实施例中一方面中的方法。本发明实施例一方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如本发明实施例中一方面中的方法。本发明实施例可以通过获取客户端发送的API请求中的第一输入参数,然后将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,对第一输入参数进行安全检测得到安全检测结果,该安全检测结果用于指示上述第一输入参数检测通过或者检测不通过,若安全检测结果指示上述第一输入参数检测不通过,则对上述客户端执行安全处理策略。可见,服务器在接收到客户端发送的API请求后,可以提取出API请求中的输入参数或参数变量,进而利用输入参数的特征对输入参数进行安全检测从而识别API请求或客户端是否合法,而非现有技术中的在接收API请求之前由第三方进行客户端的身份验证,节省了安全验证的成本,提高了安全验证的便捷性,并且基于输入参数的安全验证相较于现有技术中的用户凭证的验证方式来说,验证的精准度更高,从而可以提升对于API数据安全的保护能力,提高API的安全性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种网络架构示意图;图2是本发明实施例提供的一种API攻击检测方法的场景示意图;图3是本发明实施例提供的一种API攻击检测方法的流程示意图;图4是本发明实施例提供的一种服务器的软件架构示意图;图5是本发明实施例提供的另一种API攻击检测方法的流程示意图;图6A是本发明实施例提供的一种正常SQL语句利用AST生成的SQL语法树结构的示意图;图6B是本发明实施例提供的一种正常SQL语句利用AST生成的SQL语法树结构的示意图;图6C是本发明实施例提供的一种异常SQL语句利用AST生成的SQL语法树结构的示意图;图7是本发明实施例提供的另一种API攻击检测方法的流程示意图;图8是本发明实施例提供的数据枚举请求的特征示意图;图9是本发明实施例提供的一种应用程序接口API攻击检测装置的结构示意图;图10是本发明实施例提供的另一种应用程序接口API攻击检测装置的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。请参见图1,是本发明实施例提供的一种网络架构示意图。该网络架构可以包括一个或多个服务器以及一个或多个终端设备如图1所示,具体包括终端设备100a、终端设备100b、终端设备100c、服务器200,服务器200可以通过网络与每个终端设备进行数据传输,每个终端设备均可以安装各种应用APP如微信,服务器200可以为各种应用对应的后台服务器,因此,每个终端设备均可以通过该各种应用对应的客户端与服务器200进行数据传输,如服务器200可以向每个终端设备发送用户信息例如用户身份信息。终端设备可以包括手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备mobileinternetdevice,MID、可穿戴设备例如智能手表、智能手环等。每个终端设备都可以在该各类应用对应的客户端中显示相关应用界面或信息。具体请一并参见图2,是本发明实施例提供的一种API攻击检测方法的场景示意图。如图2所示,该场景以图1所对应实施例中的终端设备100a为例,终端设备100a在打开公司的网站后,在终端显示界面中可以显示公司员工的姓名,在该页面中,用户或者公司管理人员在点击某一个员工的姓名例如“张三”时,终端设备100a可以响应用户或者公司管理人员针对该员工的选择操作,向服务器200发送API请求例如用户的原命令为“select*fromUserswhereId=1”,请求获取该员工的简历信息,服务器200可以根据该API请求确定发出请求的终端设备100a对应的用户标识信息以及该员工的简历信息对应的索引信息例如ID=1,从数据库中查询ID=1的简历信息返回终端设备100a。终端设备100a接收到服务器返回的ID=1的简历信息后,页面可以跳转到该员工的简历页面,在简历页面上可以显示该员工详细的信息。其中,在终端设备100a向服务器200发送API请求后,服务器200可以基于API请求中的输入参数例如“select*fromUserswhereId=1”,结合合法API请求中的输入参数的特征,对客户端发送的API请求中的输入参数进行安全检测得到安全检测结果,若安全检测结果指示该API请求检测通过,则服务器200才会向终端设备100a返回员工的简历信息,如果安全检测结果指示该API请求检测不通过,则服务器200不会向终端设备100a返回员工的简历信息,从而提高API的安全性。本申请实施例中,对客户端发送的API请求中的输入参数检测通过,也即对客户端发送的API请求检测通过,对客户端发送的API请求中的输入参数检测不通过,也即对客户端发送的API请求检测不通过。请参见图3,是本发明实施例提供的一种API攻击检测方法的流程示意图。该方法可以包括以下步骤:步骤S101,服务器获取客户端发送的API请求中的第一输入参数。具体的,服务器该服务器对应于图2所对应实施例中的服务器200可以接收一个或多个客户端发送的API请求。每个客户端在一段时间内可以向服务器发送多个API请求。每个API请求中均包含输入参数或输入变量。例如,输入参数可以是结构化查询语言StructuredQueryLanguage,SQL语句。其中,客户端发送的API请求中除了包括输入参数以外,还可以包括请求时间、来源IP、WEB参数等信息。输入参数中有部分可以是用户选择的,有部分可以是开发者预先设置好的,例如图2所示员工姓名显示页面中,用户可以选择其中某一员工的名字,从而触发终端设备100a向服务器200发送API请求获取该员工的简历信息。假设张三的简历索引为1,李四的简历索引为2,用户点击张三的名字,则终端设备100a向服务器200发送的API请求中携带的输入参数则为SQL语句“select*fromUserswhereId=1”,其中,“1”这一索引是用户选择的,“select*fromUserswhereId=”则是由开发人员预先设置的。步骤S102,服务器将第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定第一输入参数的安全检测结果,安全检测结果用于指示第一输入参数检测通过或者检测不通过。本发明实施例通过分析历史API接口数据泄露案例,归纳出攻击者窃取API数据的基本手法,发现攻击者主要通过拖库又可称为从数据库中导出数据操作与数据枚举又可称为遍历输入参数等方式获取敏感数据,因此本发明实施例对这几种窃取API数据的手段进行分析,提取了这些手段的行为特征,建立各自的行为检测模型,然后利用行为检测模型对输入参数进行安全检测。其中,攻击者的拖库行为一般是利用应用层漏洞实现的,例如攻击者通过SQL注入漏洞进行数据库的操作行为,针对这种异常行为,本发明实施例采用恶意黑特征或黑名单结合SQL语法树结构来对输入参数进行安全检测。具体检测过程可以参见图5所示实施例。攻击者的数据枚举操作一般是利用逻辑漏洞实现的,一般是在检测到API接口后,会尝试遍历接口参数来获取数据。以图2为例,如果攻击者通过发送携带输入参数“select*fromUserswhereId=1”的API请求获取到“张三”的简历信息后,对参数变量“1”进行遍历,例如从1遍历至10000,则可以获取到更多员工的简历信息。本发明实施例需要将用户正常行为与异常行为区分开,所以可以结合输入参数的请求频次、差值以及差值出现的频次等信息来对输入参数进行安全检测。具体检测过程可以参见图7所示实施例。本申请中,服务器可以部署安全检测产品,安全检测产品包括但不限于:Web应用程序防火墙WebApplicationFirewall,WAF、运行时应用自我保护RuntimeApplicationSelf-Protection,RASP、应用程序接口管理平台ApplicationProgrammingInterfaceManager,APIM等。本发明实施例以服务器部署RASP为例,对本发明的实现方式进行说明。但是本发明实施例还适用于部署WAF、APIM产品的服务器。RASP是一种运行时应用自我保护程序,可自身注入到服务器的应用程序中,与应用程序融为一体,实时监测、阻断攻击,使程序自身拥有自保护的能力。并且应用程序无需在编码时进行任何的修改,只需进行简单的配置即可。本发明实施例中,服务器可以通过RASP实现对关键函数例如数据库调用函数的监控,获取关键函数的参数信息。举例说明:服务器接收客户端发送的API请求,API请求中携带输入参数,RASP会监控并采集服务器接收的API请求并将API请求中的输入参数存储到数据中台,并在后台通过输入参数的特征对API请求进行检测得到检测结果。具体可以参见图4所示软件架构示意图。服务器包括数据采集模块和数据分析模块。其中,数据采集模块用于接收客户端发送的API请求,RASP用于监控服务器接收到的API请求并将API请求的相关输入参数保存到数据中台,以进行后续的检测过程。数据分析模块采用两种行为检测模型分析输入参数,其中,应用漏洞分析模块主要涉及黑特征匹配模块以及语法树匹配模块,黑特征匹配模块用于检测输入参数中是否包括预设的黑特征,语法树匹配模块用于将输入参数按照语句结构拆分成语法树结构,并识别语法树的分支结构数是否与合法的分支结构数相同,其中,合法的分支结构为合法API请求中的输入参数进行语句结构拆分后的分支结构数。逻辑漏洞分析模块主要涉及正常行为检测模块和异常行为检测模块,其中,正常行为检测模块用于识别请求频次正常请求频次高于一定阈值的正常输入参数,异常行为检测模块用于识别请求频次异常请求频次低于一定阈值的异常输入参数,其中,该阈值为合法API请求中的输入参数的请求频次。合法API请求可以是通过历史分析统计,归纳出的符合要求的API请求。步骤S103,若安全检测结果指示第一输入参数检测不通过,服务器对客户端执行安全处理策略。本发明实施例中,服务器在检测到异常API请求后,可以将攻击者数据枚举的范围例如从1-10000、攻击者的IP地址、攻击时段、攻击者攻击的API接口数据进行归纳整理,然后将告警信息也称之为工单信息发送至机器负责人或者安全运维平台。其中,工单信息包括但不限于:第一输入参数、攻击时间、业务信息攻击的服务器的所属区域、攻击的服务器的IP、攻击者的IP、告警事件标识、告警原因与具体解释例如是由于什么行为拖库行为、数据枚举行为触发的告警。机器负责人或者安全运维平台的管理员可以对服务器上报的工单信息进行人工查验,如果工单确认为攻击者入侵,则进行应急响应流程,例如对异常客户端进行限流、告警或拒绝访问。如果工单确认为误报,则管理员可以选择添加相应命令进入已知典型业务白特征库,以提升后续检测的准确率。实施本发明实施例,可以通过获取客户端发送的API请求中的第一输入参数,然后将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,对第一输入参数进行安全检测得到安全检测结果,该安全检测结果用于指示上述第一输入参数检测通过或者检测不通过,若安全检测结果指示上述第一输入参数检测不通过,则对上述客户端执行安全处理策略。可见,服务器在接收到客户端发送的API请求后,可以提取出API请求中的输入参数或参数变量,进而利用输入参数的特征对输入参数进行安全检测从而识别API请求或客户端是否合法,而非现有技术中的在接收API请求之前由第三方进行客户端的身份验证,节省了安全验证的成本,提高了安全验证的便捷性,并且基于输入参数的安全验证相较于现有技术中的用户凭证的验证方式来说,验证的精准度更高,从而可以提升对于API数据安全的保护能力,提高API的安全性。参见图5,是本发明实施例提供的另一种API攻击检测方法的流程示意图。该方法可以包括以下步骤:步骤S201,服务器获取客户端发送的API请求中的第一输入参数。步骤S202,服务器判断第一输入参数是否包括预设黑特征,若是,执行步骤S203。这里,黑特征指的是区别于正常SQL语句的特征,开发人员或者管理人员可以将攻击者用于进行攻击的SQL语句特征提炼出来,归纳为黑特征。黑特征还可以称为黑名单,其中包含攻击者用于进行攻击的SQL语句特征。服务器可以利用黑特征来区分恶意SQL语句。以输入参数“select*fromUserswhereId=1”为例,其中整数1为参数变量,如果输入参数为“select*fromUserswhereId=1or1=1”,则其中的参数变量“1or1=1”为黑特征。利用黑特征可以对输入参数进行第一层的过滤,过滤掉正常的API请求,保留下来的则为可疑的API请求,可以减少后续计算的复杂度,提高检测的准确率。若输入参数中不包括预设黑特征,则可以判定该输入参数为正常输入参数,该输入参数对应的API请求则为正常API请求,该API请求的安全检测结果为检测通过。步骤S203,服务器对第一输入参数进行语句结构拆分。其中,语句拆分例如可以是SQL语法树结构拆分。在计算机科学中,抽象语法树AbstractSyntaxTree,AST,或者语法树syntaxtree,是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。本发明实施例对输入参数或SQL语句拆分成SQL语法树,SQL语法树便是用于将多层SQL语句结构拆分出来,用树状结构表示SQL语句的逻辑结构。参见图6A,是一种正常SQL语句利用AST生成的SQL语法树结构的示意图。如图6A所示,正常SQL语句为“select*fromUserswherename=1”,可以看出生成的SQL语法树结构有8个分支,因此这个SQL语句的分支结构数为8。步骤S204,服务器判断第一输入参数进行语句结构拆分后的分支结构数是否不等于第一阈值,第一阈值为合法API请求的输入参数的分支结构数,若第一输入参数进行语句结构拆分后的分支结构数不等于第一阈值,则安全检测结果指示第一输入参数检测不通过。其中,第一阈值即为正常合法的输入参数的分支结构数,第一阈值可以是由开发人员或管理人员通过统计正常请求的SQL语法树分支结构数定的阈值。例如,参见图6B,是一种正常SQL语句利用AST生成的SQL语法树结构的示意图。如图6B所示,由于SQL语句“select*fromUserswherename=‘abc\’or1=1#”中进行了单引号转义,使得原本的SQL语句结构没有发生变化,故SQL注入没有成功。可以看出树状图有8个分支,故这个SQL语句的分支结构数仍然为8,因此,“select*fromUserswherename=‘abc\’or1=1#”为正常的SQL语句,该SQL语句对应的API请求检测通过。参见图6C,是一种恶意SQL语句利用AST生成的SQL语法树结构的示意图。如图6C所示,由于SQL语句“select*fromUserswherename=‘abc’or1=1#”引入单引号,导致SQL语句的语法结构发生了改变,灰色的地方是SQL注入后的异常节点,分支结构数变为13,与正常分支结构数不同,因此,“select*fromUserswherename=‘abc’or1=1#”为异常的SQL语句,该SQL语句对应的API请求检测不通过。若输入参数进行语句拆分后的分支结构数等于第一阈值,则可以判定该输入参数为正常输入参数,该输入参数对应的API请求则为正常API请求,该API请求的安全检测结果为检测通过。步骤S205,若安全检测结果指示第一输入参数检测不通过,服务器对客户端执行安全处理策略。在一种可选的实施方式中,还可以结合最大输入位长度对输入参数进行更精准的检测。示例性的,在步骤S204之后,在步骤S205之前,还包括:若第一输入参数进行语句结构拆分后的分支结构数不等于第一阈值,服务器进一步判断第一输入参数的长度是否大于或等于第二阈值,若第一输入参数的长度大于或等于第二阈值,则安全检测结果指示第一输入参数检测不通过。其中,第二阈值是指输入参数的最大输入位长度,可以是由开发人员设置的。正常的API请求参数会在一个合理的长度区间内波动,而恶意的API请求由于要构造有效负载称之为payload,往往存在输入位长度过长等问题,因此可以结合输入参数的长度对恶意非法API请求进行更准确的识别。例如,第二阈值为100位,若API请求中的SQL语句的长度大于100位,则可以识别出该API请求检测不通过。本发明实施例中的步骤S201和S205的相关描述可以参考前述图3实施例中的步骤S101和S103,此处不再赘述。采用图5所示实施例的方法流程可以针对每个客户端发送的每个API请求中的输入参数进行检测,从而识别每个API请求的合法性。实施本发明实施例,服务器可以获取客户端发送的API请求中的输入参数,然后识别输入参数中是否包含预设的黑特征,若包含,则可以进一步检测该输入参数的SQL语法树的分支结构数是否等于正常的分支结构数,若不等于,则可以识别出该输入参数为恶意输入参数,该输入参数对应的API请求为恶意API请求,进而可以对发送该API请求的客户端执行安全处理策略。可见,服务器在接收到客户端发送的API请求后,可以提取出API请求中的输入参数或参数变量,进而采用黑特征结合SQL语法树对输入参数进行安全检测从而识别API请求或客户端是否合法,而非现有技术中的在接收API请求之前由第三方进行客户端的身份验证,节省了安全验证的成本,提高了安全验证的便捷性,并且基于输入参数的安全验证相较于现有技术中的用户凭证的验证方式来说,验证的精准度更高,从而可以提升对于API数据安全的保护能力,提高API的安全性。并且,采用黑特征识别可以过滤掉一部分合法的API请求,降低后续检测的复杂度,对剩余的可疑API请求利用SQL语法树进行精细化的检测,可以提高检测的准确性。进一步的,还可以结合输入参数的长度进一步对输入参数进行精细化的检测,可以提高检测的准确性。参见图7,是本发明实施例提供的另一种API攻击检测方法的流程示意图。该方法可以包括以下步骤:步骤S301,服务器获取客户端发送的API请求中的N个输入参数,N为大于等于2的整数。步骤S302,服务器确定N个输入参数中请求频次小于或等于第三阈值的多个输入参数,第三阈值为合法API请求中的输入参数的请求频次。本发明实施例中,可以针对相同API的请求按时间段T进行统计,假定T为10分钟,将10分钟内所有相同API接口的请求数据,依据输入参数进行排序,然后统计每个输入参数的请求频次。其中,请求频次过低的则为可疑的输入参数,请求频次高的则为正常的输入参数,这是因为正常的API请求的特征较为明显,具体表现为请求的参数范围较为固定且重复出现的概率较大即请求的频次高,而异异常的API请求的特征则为请求的频次低且参数范围多呈线性关系且参数范围的差值固定,因此,利用请求频次来对输入参数进行筛选,如果超过预设的频次门限,则为正常的输入参数,若低于预设的频次门限,则为异常的输入参数进行下一步的检测。其中,预设门限可以是由开发人员通过历史合法API请求中的输入参数的请求频次设置的。可以参见图8所示,是数据枚举请求的特征。正常API请求的参数范围较为固定且重复出现的概率较大即请求的频次高,而异常的API请求的特征则为请求的频次低且参数范围多呈线性关系且参数范围的差值固定。由于输入参数类型可能不为整型,本发明实施例可以针对符合数字类型分布的参数进行统计。例如,服务器在10分钟内接收到多个客户端针对API接口1发送的共76次的API请求,其中,各个API请求中携带的输入参数的请求频次可以参见如下表1所示。表1输入参数请求频次select*fromUserswherename=110select*fromUserswherename=220select*fromUserswherename=325select*fromUserswherename=415select*fromUserswherename=1001select*fromUserswherename=2001select*fromUserswherename=2011select*fromUserswherename=3001select*fromUserswherename=4001select*fromUserswherename=5001由表1可知,在10分钟内,针对AIP接口1,服务器接收到的输入参数“select*fromUserswherename=1”的次数为10次,接收到的输入参数“select*fromUserswherename=100”的次数为1次,假设第三阈值为2,则可以确定出输入参数“select*fromUserswherename=100”为正常的输入参数,输入参数“select*fromUserswherename=100”为恶意输入参数。同样的,“select*fromUserswherename=200”、“select*fromUserswherename=201”、“select*fromUserswherename=300”、“select*fromUserswherename=400”以及“select*fromUserswherename=500”也是恶意的输入参数,这几个输入参数需要进行步骤S303的进一步检测。若输入参数的请求频次大于第三阈值,则可以判定该输入参数为正常输入参数,该输入参数对应的API请求则为正常API请求,该API请求的安全检测结果为检测通过。步骤S303,服务器将多个输入参数按照由大到小或由小到大的顺序进行排序。服务器筛选出异常的输入参数后,可以对输入参数进行由大到小或由小到大的排序。例如,将上述表1中的异常输入参数进行由小到大的排序后,得到如下表2。表2输入参数请求频次select*fromUserswherename=1001select*fromUserswherename=2001select*fromUserswherename=2011select*fromUserswherename=3001select*fromUserswherename=4001select*fromUserswherename=5001步骤S304,服务器确定排序后的多个输入参数中每两个相邻输入参数的差值。经过了排序后,可以计算每两个相邻输入参数之间的差值。例如,上述表2中可以确定6个输入参数的差值分别为100、1、99、100、100。步骤S305,服务器判断多个输入参数中相邻两个输入参数的差值的频次是否大于或等于第四阈值,若多个输入参数中相邻两个输入参数的差值的频次大于或等于第四阈值,则安全检测结果指示第一输入参数检测不通过。基于异常API请求的特征,一是二者之间一般存在线性关系遍历接口参数,二是参数变化的幅度单一,也就是差值固定。由此,将过滤排序后的数据进行差值统计后,进行二次频次统计,将超过预设的频次门限的输入参数确定为最终的异常输入参数。例如,上述表2中的6个输入参数的差值分别为100、1、99、100、100,其中,差值100出现的频次为3次,假设第四阈值1次,则差值100的频次大于第四阈值,因此,输入参数“select*fromUserswherename=100”、“select*fromUserswherename=200”、“select*fromUserswherename=300”、“select*fromUserswherename=400”以及“select*fromUserswherename=500”均为异常输入参数,这几个异常输入参数对应的API请求则为异常API请求,该因此API请求的结果为检测不通过。若输入参数中相邻两个输入参数的差值的频次小于第四阈值,则可以判定该输入参数为正常输入参数,该输入参数对应的API请求则为正常API请求,该API请求的安全检测结果为检测通过。除了将差值的频次大于或等于第四阈值的输入参数确定为异常输入参数以外,还可以将差值的频次最大的输入参数确定为异常输入参数。步骤S306,若安全检测结果指示第一输入参数检测不通过,服务器对客户端执行安全处理策略。本发明实施例中的步骤S301和S306的相关描述可以参考前述图3实施例中的步骤S101和S103,此处不再赘述。采用图7所示实施例的方法流程可以针对每个客户端发送的每个API请求中的输入参数进行检测,从而识别每个API请求的合法性。实施本发明实施例,服务器可以获取客户端发送的API请求中的输入参数,然后识别输入参数的请求频次是否过低,若是,则可以进一步识别输入参数的请求范围是否差值固定,若是,则可以识别出该输入参数为恶意输入参数,该输入参数对应的API请求为恶意API请求,进而可以对发送该API请求的客户端执行安全处理策略。可见,服务器在接收到客户端发送的API请求后,可以提取出API请求中的输入参数或参数变量,进而采用请求频次结合请求范围对输入参数进行安全检测从而识别API请求或客户端是否合法,而非现有技术中的在接收API请求之前由第三方进行客户端的身份验证,节省了安全验证的成本,提高了安全验证的便捷性,并且基于输入参数的安全验证相较于现有技术中的用户凭证的验证方式来说,验证的精准度更高,从而可以提升对于API数据安全的保护能力,提高API的安全性。并且,采用请求频次识别可以过滤掉一部分合法的API请求,降低后续检测的复杂度,对剩余的可疑API请求利用请求范围进行精细化的检测,可以提高检测的准确性。需要说明的是,上述图5所示的应用漏洞检测方法与图7所示的逻辑漏洞检测方法在实际应用中可以并行执行也可以单独执行,两种方法并行执行时,可以结合两种行为检测模型对API请求进行检测,使得检测精准度更高。请参见图9,是本发明实施例提供的一种应用程序接口API攻击检测装置的结构示意图。如图9所示,该应用程序接口API攻击检测装置1可以应用于上述图2所对应实施例中的服务器200,该应用程序接口API攻击检测装置1可以包括获取单元11、检测单元12和安全处理单元13;获取单元11,用于获取客户端发送的API请求中的第一输入参数;检测单元12,用于将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,所述安全检测结果用于指示所述第一输入参数检测通过或者检测不通过;安全处理单元13,用于若所述安全检测结果指示所述第一输入参数检测不通过,对所述客户端执行安全处理策略。其中,获取单元11、检测单元12和安全处理单元13的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101-步骤S103,检测单元12的具体实现方式还可以参见上述图5所对应实施例中的步骤S202-步骤S204,或者可以参见上述图7所对应实施例中的步骤S302-步骤S305,这里不再进行赘述。请一并参见图9,检测单元12可以包括:第一判断单元121,用于判断所述第一输入参数中是否包括预设黑特征;拆分单元122,用于若所述第一输入参数中包括所述预设黑特征,对所述第一输入参数进行语句结构拆分;第二判断单元123,用于判断所述第一输入参数进行语句结构拆分后的分支结构数是否不等于第一阈值,所述第一阈值为合法API请求的输入参数的分支结构数;若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。其中,第一判断单元121、拆分单元122和第二判断单元123的具体功能实现方式可以参见上述图5所对应实施例中的步骤S202-步骤S204。请一并参见图9,检测单元12还包括:第三判断单元124,用于若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,判断所述第一输入参数的长度是否大于或等于第二阈值;若所述第一输入参数的长度大于或等于所述第二阈值,则所述安全检测结果指示所述第一输入参数检测不通过。其中,第三判断单元124的具体功能实现方式可以参见上述图5所对应实施例中的步骤S205,这里不再进行赘述。请一并参见图9,所述第一输入参数包括N个输入参数,N为大于等于2的整数;检测单元12可以包括:第一确定单元125,用于确定所述N个输入参数中请求频次小于或等于第三阈值的多个输入参数;排序单元126,用于将所述多个输入参数按照由大到小或由小到大的顺序进行排序;第二确定单元127,用于确定排序后的所述多个输入参数中每两个相邻输入参数的差值;第四判断单元128,用于判断所述多个输入参数中相邻两个输入参数的差值的频次是否大于或等于第四阈值;若所述多个输入参数中相邻两个输入参数的差值的频次大于或等于所述第四阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。其中,第一确定单元125、排序单元126、第二确定单元127以及第四判断单元128的具体功能实现方式可以参见上述图7所对应实施例中的步骤S302-步骤S305。请一并参见图9,该应用程序接口API攻击检测装置1还包括:发送单元14,用于若所述安全检测结果指示所述第一输入参数检测不通过,向安全运维平台或管理员发送告警信息,所述告警信息包括告警事件标识、所述客户端的标识信息、所述第一输入参数或所述客户端发送所述API请求的时间信息中的一项或多项。其中,发送单元14的具体功能实现方式可以参见上述图3所对应实施例中的步骤S303。本发明实施例可以通过获取客户端发送的API请求中的第一输入参数,然后将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,对第一输入参数进行安全检测得到安全检测结果,该安全检测结果用于指示上述第一输入参数检测通过或者检测不通过,若安全检测结果指示上述第一输入参数检测不通过,则对上述客户端执行安全处理策略。可见,服务器在接收到客户端发送的API请求后,可以提取出API请求中的输入参数或参数变量,进而利用输入参数的特征对输入参数进行安全检测从而识别API请求或客户端是否合法,而非现有技术中的在接收API请求之前由第三方进行客户端的身份验证,节省了安全验证的成本,提高了安全验证的便捷性,并且基于输入参数的安全验证相较于现有技术中的用户凭证的验证方式来说,验证的精准度更高,从而可以提升对于API数据安全的保护能力,提高API的安全性。请参见图10,图10是本发明实施例提供的又一种应用程序接口API攻击检测装置的结构示意图。如图10所示,该应用程序接口API攻击检测装置1000可以对应于上述图2所对应实施例中的服务器200,该应用程序接口API攻击检测装置1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述应用程序接口API攻击检测装置1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏Display、键盘Keyboard,可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口如WI-FI接口。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器non-volatilememory,例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。在如图10所示的应用程序接口API攻击检测装置1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现上述图3、图5、图7任一个所对应实施例中对所述应用程序接口API攻击检测方法的描述,这里不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。应当理解,本发明实施例中所描述的应用程序接口API攻击检测装置1000可执行前文图3、图5、图7任一个所对应实施例中对所述应用程序接口API攻击检测方法的描述,也可执行前文图9所对应实施例中对所述应用程序接口API攻击检测装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。此外,这里需要指出的是:本发明实施例还提供了一种计算机可读存储介质,且所述计算机可读存储介质中存储有前文提及的应用程序接口API攻击检测装置1所执行的计算机程序,且所述计算机程序包括程序指令,当所述处理器执行所述程序指令时,能够执行前文图3、图5、图7任一个所对应实施例中对所述应用程序接口API攻击检测方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本发明所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储存储器Read-OnlyMemory,ROM或随机存储存储器RandomAccessMemory,RAM等。以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
权利要求:1.一种应用程序接口API攻击检测方法,应用于服务器,其特征在于,包括:获取客户端发送的API请求中的第一输入参数;将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,所述安全检测结果用于指示所述第一输入参数检测通过或者检测不通过;若所述安全检测结果指示所述第一输入参数检测不通过,对所述客户端执行安全处理策略。2.根据权利要求1所述的方法,其特征在于,所述将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,包括:判断所述第一输入参数中是否包括预设黑特征;若所述第一输入参数中包括所述预设黑特征,对所述第一输入参数进行语句结构拆分;判断所述第一输入参数进行语句结构拆分后的分支结构数是否不等于第一阈值,所述第一阈值为所述合法API请求的输入参数的分支结构数;若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。3.根据权利要求2所述的方法,其特征在于,所述判断所述第一输入参数进行语句结构拆分后的分支结构数是否不等于第一阈值之后,还包括:若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,判断所述第一输入参数的长度是否大于或等于第二阈值;若所述第一输入参数的长度大于或等于所述第二阈值,则所述安全检测结果指示所述第一输入参数检测不通过。4.根据权利要求1至3任一项所述的方法,其特征在于,所述第一输入参数包括N个输入参数,N为大于等于2的整数;所述将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,包括:确定所述N个输入参数中请求频次小于或等于第三阈值的多个输入参数,所述第三阈值为所述合法API请求中的输入参数的请求频次;将所述多个输入参数按照由大到小或由小到大的顺序进行排序;确定排序后的所述多个输入参数中每两个相邻输入参数的差值;判断所述多个输入参数中相邻两个输入参数的差值的频次是否大于或等于第四阈值;若所述多个输入参数中相邻两个输入参数的差值的频次大于或等于所述第四阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。5.根据权利要求1所述的方法,其特征在于,还包括:若所述安全检测结果指示所述第一输入参数检测不通过,向安全运维平台或管理员发送告警信息,所述告警信息包括告警事件标识、所述客户端的标识信息、所述第一输入参数或所述客户端发送所述API请求的时间信息中的一项或多项。6.一种应用程序接口API攻击检测装置,其特征在于,包括:获取单元,用于获取客户端发送的API请求中的第一输入参数;检测单元,用于将所述第一输入参数的特征与合法API请求中的输入参数的特征进行比对,确定所述第一输入参数的安全检测结果,所述安全检测结果用于指示所述第一输入参数检测通过或者检测不通过;安全处理单元,用于若所述安全检测结果指示所述第一输入参数检测不通过,对所述客户端执行安全处理策略。7.根据权利要求6所述的装置,其特征在于,所述检测单元,包括:第一判断单元,用于判断所述第一输入参数中是否包括预设黑特征;拆分单元,用于若所述第一输入参数中包括所述预设黑特征,对所述第一输入参数进行语句结构拆分;第二判断单元,用于判断所述第一输入参数进行语句结构拆分后的分支结构数是否不等于第一阈值,所述第一阈值为所述合法API请求的输入参数的分支结构数;若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。8.根据权利要求7所述的装置,其特征在于,所述检测单元还包括:第三判断单元,用于若所述第一输入参数进行语句结构拆分后的分支结构数不等于所述第一阈值,判断所述第一输入参数的长度是否大于或等于第二阈值;若所述第一输入参数的长度大于或等于所述第二阈值,则所述安全检测结果指示所述第一输入参数检测不通过。9.根据权利要求6至8任一项所述的装置,其特征在于,所述第一输入参数包括N个输入参数,N为大于等于2的整数;所述检测单元,包括:第一确定单元,用于确定所述N个输入参数中请求频次小于或等于第三阈值的多个输入参数;排序单元,用于将所述多个输入参数按照由大到小或由小到大的顺序进行排序;第二确定单元,用于确定排序后的所述多个输入参数中每两个相邻输入参数的差值;第四判断单元,用于判断所述多个输入参数中相邻两个输入参数的差值的频次是否大于或等于第四阈值;若所述多个输入参数中相邻两个输入参数的差值的频次大于或等于所述第四阈值,则所述安全检测结果指示所述第一输入参数检测不通过;其中,所述安全处理策略包括限流、告警和拒绝访问中的至少一种。10.根据权利要求6所述的装置,其特征在于,所述装置还包括:发送单元,用于若所述安全检测结果指示所述第一输入参数检测不通过,向安全运维平台或管理员发送告警信息,所述告警信息包括告警事件标识、所述客户端的标识信息、所述第一输入参数或所述客户端发送所述API请求的时间信息中的一项或多项。11.一种应用程序接口API攻击检测装置,其特征在于,包括:处理器和存储器;所述处理器和存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如权利要求1-5任一项所述的方法。12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-5任一项所述的方法。
百度查询: 腾讯科技(深圳)有限公司 应用程序接口攻击检测方法、装置以及可读存储介质
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。