应用程序编程接口的安全管理方法和系统与流程

文档序号:16514323发布日期:2019-01-05 09:32阅读:259来源:国知局
应用程序编程接口的安全管理方法和系统与流程

本申请涉及信息安全技术领域,特别地,涉及一种应用程序编程接口的安全管理方法和系统。



背景技术:

随着计算机和网络技术的迅速发展和广泛普及,为了方便各个程序之间的相互访问,应用程序编程接口(api,applicationprogramminginterface)技术应运而生,api的发明和发展大大促进了计算机产业的进步;随着app应用以及智能设备爆发增长,越来越多的零售商、媒体、政府和金融服务公司开始公开webapi,如何能够安全有效将这些api管理起来对于企业而言并不容易。

api是未来新经济当中的一个基石,未来一个成功的企业或者一项业务和其他企业或者业务最大的区别点在于,是否能够应用第三平台,是否有一个成功的应用,这个应用同样需要在不同设备上都能够使用。随着移动应用的深入发展,现在很多企业都已经变成了开放型的企业,在这样的场景中,企业需要管理好流入和流出的信息。同时,现在针对api的攻击也越来越多,已经出现很多api安全漏洞,在每种情况下可能都会使用不同的安全规则,api要支持这些安全标准对于公司而言挑战巨大。

近年来,各大型企业逐步加强信息系统安全建设工作,部署实施了入侵检测、防火墙等安全产品和措施。但从信息安全角度看,仍存在以下问题:api接口和业务逻辑没有分离,企业内部的应用及其数据无法阻挡通过api的非法访问。



技术实现要素:

本申请提供一种应用程序编程接口的安全管理方法和系统,用于解决现有技术无法阻挡通过api非法访问业务数据的问题。

本申请公开的一种应用程序编程接口的安全管理方法,执行所述方法的系统设置有网关服务器,在所述网关服务器侧,所述方法包括:接收发布者提交的业务逻辑接口信息;所述业务逻辑接口信息包括业务逻辑接口名称、业务逻辑接口地址和业务逻辑接口端口号;根据网关服务器的ip地址和为所述发布者分配的端口号,按预设格式生成对外发布的接口外部访问地址,并建立所述接口外部访问地址与业务逻辑接口信息之间的关联关系;接收订阅者发出的接口调用请求,所述接口调用请求包括订阅者账号、请求调用的接口外部访问地址和订阅上述接口时令牌中心为该订阅者颁发的令牌;请求令牌中心对发出接口调用请求的订阅者的身份进行认证,若通过认证,则根据所述接口外部访问地址与业务逻辑接口信息之间的关联关系,将接口调用请求转发至对应的业务逻辑接口,并将该业务逻辑接口的执行结果返回至订阅者。

优选的,还包括:若令牌中心没有通过对请求接口调用的订阅者的身份认证,则向订阅者反馈身份认证结果。

优选的,订阅者订阅待调用接口的方法具体包括:将订阅者订阅待调用接口的请求转发至令牌中心;接收令牌中心为该订阅者生成的令牌,并反馈至订阅者;令牌中心在为订阅者生成令牌时,将生成的令牌与订阅者账号绑定。

优选的,令牌中心为订阅者颁发令牌的方法具体包括:接收订阅者发出的令牌生成请求;为所述订阅者生成令牌,并将生成的令牌与订阅者账号绑定;将生成的令牌返回至订阅者;在令牌中心通过订阅者的身份认证步骤之后,所述方法还包括:记录所述订阅者及其请求调用的接口信息和请求调用时间;相应的,在接收订阅者发出的接口调用请求步骤之后还包括:判断所述订阅者单位时间内调用接口的次数是否达到预设阈值,若是,向订阅者反馈接口调用限制提示。

优选的,在收到业务逻辑接口返回的执行结果后,记录所述接口调用请求的响应时间;以及,接收发布者提交的接口使用情况查询请求,查询所述发布者已发布接口的使用频率以及响应时间,以图表形式展现已发布接口的使用情况。

优选的,所述业务逻辑接口信息还包括参数名称和参数类型;接收订阅者发出的接口调用请求步骤之后还包括:对参数值进行防sql注入识别;其中,参数值中禁用的字符串包含exec、insert、select、delete和update。

优选的,所述网关服务器还设置有字符串白名单,所述网关服务器在收到发布者提交的业务逻辑接口信息以及订阅者发出的接口调用请求时,根据所述白名单对所述业务逻辑接口信息和接口调用请求是否存在可疑字符串进行检查。

优选的,所述网关服务器还设置有地址黑名单,所述网关服务器在收到发布者提交的业务逻辑接口信息以及订阅者发出的接口调用请求时,根据http头部信息对所述发布者和订阅者的地址进行检查。

优选的,所述网关服务器还设置有文件类型黑名单和文件类型白名单;对于收到的单个文件,采用文件类型黑名单进行过滤;对于批量上传的文件,采用文件类型白名单进行过滤;其中,文件类型黑名单包括sh、bat、sql、zip、tar、rar、tar.gz和7z;文件类型白名单包括xls和xlsx。

优选的,所述网关服务器还在用户访问的系统页面中设置有令牌,并对所述页面中的令牌进行权限验证。

优选的,所述建立所述接口外部访问地址与业务逻辑接口信息之间的关联关系,具体为:在配置文件或数据库表中记录所述接口外部访问地址与业务逻辑接口信息。

本申请公开的一种应用程序编程接口的安全管理系统,包括通过网络连接的网关服务器、接口发布终端和用户终端,所述网关服务器包括:接口发布服务模块,用于接收发布者通过接口发布终端提交的业务逻辑接口信息;以及,根据网关服务器的ip地址和为所述发布者分配的端口号,按预设格式生成对外发布的接口外部访问地址,并建立所述接口外部访问地址与业务逻辑接口信息之间的关联关系;其中,所述业务逻辑接口信息包括业务逻辑接口名称、业务逻辑接口地址和业务逻辑接口端口号;接口调用服务模块,用于接收订阅者通过用户终端发出的接口调用请求;以及,请求令牌中心对发出接口调用请求的订阅者的身份进行认证;当通过身份认证时,根据所述接口外部访问地址与业务逻辑接口信息之间的关联关系,将接口调用请求转发至对应的业务逻辑接口,并将该业务逻辑接口的执行结果返回至用户终端;当没有通过身份认证时,将身份认证结果返回至用户终端;其中,所述接口调用请求包括订阅者账号、请求调用的接口外部访问地址和订阅上述接口时令牌中心为该订阅者颁发的令牌。

优选的,所述网关服务器还包括:接口订阅服务模块,用于将订阅者通过用户终端发出的订阅所述接口发布服务模块发布的待调用接口的请求转发至令牌中心;以及接收令牌中心为该订阅者生成的令牌,并反馈至用户终端;其中,令牌中心在为订阅者生成令牌时,将生成的令牌与订阅者账号绑定。

优选的,所述网关服务器还包括:安全监测模块,用于记录所述订阅者及其请求调用的接口信息和请求调用时间;以及判断所述订阅者单位时间内调用接口的次数是否达到预设阈值,当订阅者在单位时间内调用接口的次数达到预设阈值时,向用户终端反馈接口调用限制提示。

本申请还公开了一种在其上记录有用于执行上述方法的程序的存储介质。

与现有技术相比,本申请优选实施例通过将业务逻辑接口与api调用人员隔离开、并通过令牌中心对订阅者身份进行认证的手段,创新性的解决了企业对公开的webapi如何进行安全有效管理的问题,实现保护api安全的目的。本发明通过对发布者的业务逻辑接口进行统一管理,使得订阅者通过api网关、对需要的api接口进行调用,保证了对api接口调用的可控性,调用者不直接调用业务逻辑接口,对业务接口起到了保护的作用;通过令牌中心对订阅者颁发令牌,并根据令牌进行认证,可控制非授权的访问,防止威胁和开放应用安全项目的漏洞;通过配置api访问限流策略,记录订阅者在单位时间内访问api次数,防止恶意攻击接口,同时监测统计api的使用情况。

附图说明

附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本申请应用程序编程接口的安全管理方法一实施例的流程;

图2为图1所示的方法实施例中api的统一发布流程;

图3为图1所示的方法实施例中api的统一订阅流程;

图4为图1所示的方法实施例中的令牌管理流程;

图5为本申请实施例中api使用情况监测流程;

图6为本申请应用程序编程接口的安全管理系统一实施例的结构示意图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。

在本申请的描述中,需要理解的是,术语“多个”的含义是两个或两个以上,除非另有明确具体的限定。术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”。术语“基于”是“至少部分地基于”。术语“一实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。

参照图1,示出了本申请应用程序编程接口的安全管理方法一实施例的流程,执行所述方法的系统包括通过网络连接的网关服务器、接口发布终端和用户终端,在所述网关服务器侧,所述方法包括:

步骤s101:接收发布者通过接口发布终端提交的业务逻辑接口信息。

具体实施时,可以在网关服务器上部署api容器和api发布服务,api发布者通过api发布终端发布api时,调用网关服务器上的api发布服务,向网关服务器发送业务逻辑接口名称、业务逻辑接口地址和业务逻辑接口端口号以及参数名称、参数类型等业务逻辑接口信息,然后由api发布服务将该业务逻辑接口转换为对外发布的api。

如图2所示,api发布者还可以对自己发布的api进行管理,包括查询、修改、删除已经发布的api等。

步骤s103:根据网关服务器的ip地址和为所述发布者分配的端口号,按预设格式生成对外发布的接口外部访问地址。

具体实施时,api网关服务器收到api发布者的请求后,可以根据api发布者的账号判断api容器中的现有apps下是否有与该发布者的账号同名的文件夹,如果不存在则以发布者账号作为名称创建文件夹。

然后,api发布服务以api网关服务器的ip为地址,为api发布者分配独立的端口号,按照预定的格式生成对外发布的api外部访问地址。

其中,上述api外部访问地址的预定格式可以是包含地址、端口号、账号、接口等信息的统一格式组合信息。例如,假设网关服务器的ip地址为192.168.1.1,为api发布者分配的端口号为10003,发布者的账号为sad,接口名称为dsa,那么对外发布的api外部访问地址的形式可以为:“http://192.168.1.1:10003/sad/service/dsa”。

步骤s105:建立所述接口外部访问地址与业务逻辑接口信息之间的关联关系。

具体实施时,上述关联关系可以在数据库表中实现关联,也可以在配置文件中实现关联,还可以采用其他方式进行关联。例如,当采用配置文件关联方式时,可以在配置文件(如config.xml)中将接口外部访问地址与业务逻辑接口信息进行关联,api发布服务会自动部署该配置文件;部署完成后即可实现api的发布,当用户访问api网关服务器的配置文件中配置的api接口地址时,api网关服务器会根据请求自动利用配置文件中的关联关系匹配到对应的业务逻辑接口,从而实现地址转换。

具体实施时,config.xml可以参考如下形式创建:

其中:

“ws6a7f7302caa74ca0ad19548776cccb3a”表示接口的唯一id;

“http://192.168.1.1:10003/sad/service/dsa”表示对外发布的接口外部访问地址;

“com.apigateway.filter.apifilter”表示网关服务器定义的拦截过滤器;

“http://127.0.0.1:4000/index?#[header:inbound:http.query.string]”表示接口的真实地址。

步骤s107:接收订阅者通过用户终端发出的接口调用请求。

所述接口调用请求包括订阅者账号、请求调用的接口外部访问地址和订阅上述接口时令牌中心为该订阅者颁发的令牌(token)等信息。

其中,令牌中心为订阅者颁发令牌的方法具体包括:接收订阅者发出的令牌生成请求;为所述订阅者生成令牌,并将生成的令牌与订阅者账号绑定;将生成的令牌返回至订阅者。

步骤s109:请求令牌中心对发出接口调用请求的订阅者的身份进行认证。

令牌中心在收到身份认证请求时,根据为该订阅者颁发token时记录的订阅者账号与token的绑定关系,对订阅者的身份进行合法性认证。

步骤s111:判断订阅者是否通过令牌中心的身份认证;若通过认证,转步骤s115;若没有通过认证,转步骤s113。

步骤s113:向订阅者反馈没有通过身份认证的结果,结束流程。

步骤s115:根据所述接口外部访问地址与业务逻辑接口信息之间的关联关系,将接口调用请求转发至对应的业务逻辑接口,并将该业务逻辑接口的执行结果返回至订阅者。

在进一步的优选实施例中,步骤s107之前还可以包括:

步骤s106:接收订阅者通过用户终端发出的接口订阅请求,请求令牌中心为订阅者生成令牌,并反馈至用户终端。步骤s106具体包括:

s106-1:将订阅者通过用户终端订阅待调用接口的请求转发至令牌中心;

s106-2:接收令牌中心为该订阅者生成的令牌,并反馈至订阅者;其中,令牌中心在为订阅者生成令牌时,将生成的令牌与订阅者账号绑定,作为后续对订阅者进行身份认证的依据。

具体实施时,可以在网关服务器布署api订阅服务,订阅者可以通过用户终端调用api订阅服务(api容器),实现api订阅功能,如图3所示。另外,订阅者通过api订阅服务还可以查询自己已经订阅的api,并对api的使用情况进行评价。进一步的,api订阅者还可以在api商店中管理自己的令牌,如令牌的下发、更换等。

上述api调用工作原理如图4所示,api订阅者在向api网关服务器发出调用请求时,api网关会向令牌中心发出身份认证请求,并接收令牌中心对订阅者身份的认证结果;对于通过身份认证的订阅者的api调用请求,api网关会根据api外部访问地址与业务逻辑接口的关联关系将上述请求转发至业务逻辑接口执行,并将执行后的响应结果返回至订阅者。本申请通过上述统一发布管理api、统一订阅api、统一身份认证等手段,将业务逻辑接口与api调用者隔离开,实现保护api安全的目的。

在另一优选实施例中,为进一步实现防止恶意攻击api的目的,还可以配置api访问限流措施,限制用户在单位时间内访问api的次数。具体的,步骤s115之后,还包括:

s116:记录所述订阅者及其请求调用的接口信息和请求调用时间。

相应的,步骤s107之后还包括:

步骤s108:判断所述订阅者单位时间内调用接口的次数是否达到预设阈值,若是,向订阅者反馈接口调用限制提示,结束流程;若否,转步骤s109。

在还一优选实施例中,为及时掌握api使用情况,还可以通过配置监测组件对api的调用频率以及响应时间进行监测分析。具体的,步骤s116之后,还可以包括:

步骤s117:记录所述接口调用请求的响应时间;

步骤s118:接收发布者通过用户终端提交的接口使用情况查询请求,查询所述发布者已发布接口的使用频率以及响应时间,以图表形式展现已发布接口的使用情况。

上述监测组件的工作流程如图5所示,包括:1、api发布者通过api发布终端查询api调用频率;2、api发布终端向监测组件发出api调用频率查询请求;3、监测组件查询api调用频率;4、监测组件返回api调用频率的查询结果;5、api发布终端以图表形式展现api调用频率;6、api发布者通过api发布终端查询api响应时间;7、api发布终端向监测组件发出查询api响应时间的请求;8、监测组件查询api响应时间;9、监测组件返回api响应时间查询结果;10、api发布终端以图表形式展现api响应时间。

另外,为进一步提高系统的安全性,本申请还提供了如下安全防护手段:

1.防sql注入:在系统中所有可接受外部参数的地方进行逐一识别,以过滤危险字符。如在全局函数中定义“禁止字符串列表”,该表中列出所要过滤出的sql攻击代码可能包含的字符串,包含但不限于:

and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare|<|>|’|(|)|{|}

2.防止跨站脚本攻击(xss):系统中的所有输入域采用服务器端白名单技术。如果需要特殊字符,应该转换为更安全的形式。如适用于各种语言的html转码,除此之外,对于可疑字符串也要进行强化检查和转化,并进一步执行以下操作:(1)对各页面的输入参数进行强化检查;(2)对原来只在客户端判断的参数,在服务器端进一步强化检查;(3)最终提供了全局的转码和过滤的函数。

3.来源请求验证:在系统中检查httpreferer头部信息,对不符合系统要求的来源请求一律禁止访问。

4.文件上传过滤:对文件格式进行严格黑名单过滤验证,包括但不限于以下格式的文件sh、bat、sql、zip、rar、tar、tar.gz、7z绝对禁止上传,特有业务(如批量导入)功能则以白名单方式进行过滤验证,仅允许xls或xlsx格式文件的上传。

5.静态密码防暴力破解:(1)设置时间及次数阀值,单位时间内同一账号连续登录失败次数超过阀值既锁定该账号;(2)验证码防暴力破解:验证码一次一密,无论成功失败,验证后既清除;(3)根据实际业务进行上下文逻辑上的防护,如修改密码功能中不允许绕过原密码验证功能而直接请求修改密码功能等。

6.防止越权访问:在系统页面中加入token,并在后台校验token来防止越权访问。

对于前述的各方法实施例,为了描述简单,故将其都表述为一系列的动作组合,但是本领域的技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为根据本申请,某些步骤可以采用其他顺序或同时执行;其次,本领域技术人员也应该知悉,上述方法实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

本申请还公开了一种在其上记录有用于执行上述方法的程序的存储介质。所述存储介质包括配置为以计算机(以计算机为例)可读的形式存储或传送信息的任何机制。例如,存储介质包括只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光存储介质、闪速存储介质、电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)等。

参照图6,示出了本申请应用程序编程接口的安全管理系统一实施例的结构框图,包括通过网络连接的网关服务器1、接口发布终端2和用户终端3,所述网关服务器1包括:

接口发布服务模块11,用于接收发布者通过接口发布终端2提交的业务逻辑接口信息;以及,根据网关服务器的ip地址和为所述发布者分配的端口号,按预设格式生成对外发布的接口外部访问地址,并建立所述接口外部访问地址与业务逻辑接口信息之间的关联关系.

其中,所述业务逻辑接口信息包括业务逻辑接口名称、业务逻辑接口地址、业务逻辑接口端口号,以及参数类型、参数名称等信息。

接口调用服务模块12,用于接收订阅者通过用户终端3发出的接口调用请求;以及,请求令牌中心4对发出接口调用请求的订阅者的身份进行认证;当通过身份认证时,根据所述接口外部访问地址与业务逻辑接口信息之间的关联关系,将接口调用请求转发至对应的业务逻辑接口,并将该业务逻辑接口的执行结果返回至用户终端;当没有通过身份认证时,将身份认证结果返回至用户终端。

其中,令牌中心4通过网络与网关服务器1连接;所述接口调用请求包括订阅者账号、请求调用的接口外部访问地址和订阅上述接口时令牌中心为该订阅者颁发的令牌。

在进一步的优选实施例中,所述网关服务器1还可以包括:

接口订阅服务模块13,用于将订阅者通过用户终端3发出的订阅所述接口发布服务模块发布的待调用接口的请求转发至令牌中心4;以及接收令牌中心4为该订阅者生成的令牌,并反馈至用户终端3。

其中的令牌中心4在为订阅者生成令牌时,将生成的令牌与订阅者账号绑定。

安全监测模块14,用于记录所述订阅者及其请求调用的接口信息和请求调用时间;以及判断所述订阅者单位时间内调用接口的次数是否达到预设阈值,当订阅者在单位时间内调用接口的次数达到预设阈值时,向用户终端3反馈接口调用限制提示。

使用情况监测模块15,用于记录所述接口调用请求及其响应时间;以及,根据发布者提交的接口使用情况查询请求,查询所述发布者已发布接口的使用频率以及响应时间,以图表形式展现已发布接口的使用情况。

sql防注入模块16,用于对订阅者发出的接口调用请求中的参数值进行防sql注入识别。

其中,参数值中禁用的字符串包括exec、insert、select、delete、update以及and、count、chr、mid、master、truncate、char、declare等。

需要说明的是,上述系统实施例属于优选实施例,所涉及的单元和模块并不一定是本申请所必须的。

与现有技术相比,本申请的优点具体表现在以下几个方面:(1)可保障:通过多种验证方式(防sql注入、防跨站脚本攻击、防止越权访问等)进行保护,记录相关的行为,并且通过与防火墙进行联动对来源地址请求进行实时阻断;(2)可管理:拥有统一的api发布和api订阅,统一的用户权限管理和角色管理,功能可细化到按钮级别;(3)可控制:建立可信的访问控制通道和强认证中心,通过强认证中心为用户提供统一登录服务,通过设置策略,限制用户单位时间访问api次数,防止恶意攻击接口;(4)可审计:通过监测组件监测api调用的访问频率和响应时间,并生成相应的分析图表。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于本申请的装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上对本申请所提供的一种应用程序编程接口的安全管理方法和系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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