CN116108416A - 一种应用程序接口安全防护方法及系统 - Google Patents
一种应用程序接口安全防护方法及系统 Download PDFInfo
- Publication number
- CN116108416A CN116108416A CN202310174363.6A CN202310174363A CN116108416A CN 116108416 A CN116108416 A CN 116108416A CN 202310174363 A CN202310174363 A CN 202310174363A CN 116108416 A CN116108416 A CN 116108416A
- Authority
- CN
- China
- Prior art keywords
- login
- service
- data
- interface
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/41—User authentication where a single sign-on provides access to a plurality of computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Emergency Protection Circuit Devices (AREA)
Abstract
本发明公开一种应用程序接口安全防护方法及系统,涉及电子通信技术领域,方法包括:获取客户端通过单点登录接口发送的用户登录数据;对用户登录数据依次进行第一登录校验和应用密钥校验以确定用户登录状态及对应的登录信息;获取客户端通过业务接口发送的业务请求数据;对业务请求数据依次进行第二登录校验、登录接口校验、基于所述业务令牌的接口验证码校验和签名校验以得到待执行业务数据;对待执行业务数据依次进行解码和RSA解密以得到待执行实际业务;根据待执行实际业务确定业务调用数据;对业务调用数据依次进行RSA加密和编码后,发送至所述客户端。本发明实现了对应用程序接口更全面、更高程度的安全防护。
Description
技术领域
本发明涉及电子通信技术领域,特别是涉及一种基于RSA算法的应用程序接口安全防护方法及系统。
背景技术
随着互联网、分布式、云计算技术的发展,适应现代社会信息化发展潮流,原有的基于动态网页设计技术的一体化网站,逐步向前后端分离、后端微服务化的方向发展,出现许多使用应用程序接口传输关键信息的需求,对应用程序接口安全防护水平的要求日益提高。现有的应用接口安全防护技术有以下几种:
(1)原有的使用会话对象的登录验证技术,依赖于动态网页服务器的会话对象存储用户数据信息,通过用户数据信息进行鉴权,不能适应当前以集群形式提供服务的应用程序接口,只能保证多个客户端和一个服务端之间的访问验证,且用户鉴权信息存储在存储会话对象中,存在被木马程序截取的情况,目前已经基本淘汰。
(2)使用应用程序秘钥的应用程序接口安全防护技术,该方法通过生成的一一对应的应用编号和应用秘钥进行验证,客户端进行请求时,需要添加应用编号和含有请求体和应用秘钥的摘要字符串,服务端通过应用编号查找应用秘钥与请求体做摘要运算进行验证。该方式直接在请求头中传递应用程序编号,容易暴露应用程序编号,容易通过拦截的应用程序编号伪造请求和越权访问,篡改请求和返回值。目前这种技术是绝大多数应用程序接口调用的安全防护方式。
(3)使用单点登录和加密算法的应用程序安全防护技术,此种方式是在使用应用程序秘钥的应用程序接口安全防护技术的基础上,增加了单点登录,使用时间戳防止多次登录,使用随机字符串增大推测加密方式的难度,使用令牌减少应用程序编号暴露的可能,使用加密算法防止通过拦截网络请求未经许可查看返回体,已经避免了(2)的大多数缺点,但没有对客户端访问IP进行限制,没有对请求进行校验,请求体存在被篡改的可能,没有对客户端访问权限和频率进行限制,客户端容易越权访问,遭遇拒绝服务攻击容易因为个别接口被攻击占用资源过多拖垮整个服务。目前大多数涉及关键数据应用程序接口使用这种方式可以解决安全防护问题,但随着通过应用程序接口传输数据的敏感度越来越高,需要新型的防护方法来解决应用程序接口安全性问题。
发明内容
本发明的目的是提供一种应用程序接口安全防护方法及系统,实现对应用程序接口更全面、更高程度的安全防护。
为实现上述目的,本发明提供了如下方案:
一种应用程序接口安全防护方法,包括:
获取客户端通过单点登录接口发送的用户登录数据;
对所述用户登录数据依次进行第一登录校验和应用密钥校验,以确定用户登录状态及对应的登录信息;所述用户登录状态包括允许登录和拒绝登录;当所述用户登录状态为允许登录时,对应的登录信息为业务令牌;
获取客户端通过业务接口发送的业务请求数据;
对所述业务请求数据依次进行第二登录校验、登录接口校验、基于所述业务令牌的接口验证码校验和签名校验,以得到待执行业务数据;
对所述待执行业务数据依次进行解码和RSA解密,以得到待执行实际业务;
根据所述待执行实际业务确定业务调用数据;
对所述业务调用数据依次进行RSA加密和编码后,发送至所述客户端。
可选地,所述用户登录数据包括登录IP、校验字符串、RSA加密应用编号、登录时间戳和随机字符串;
对所述用户登录数据依次进行第一登录校验和应用密钥校验,以确定用户登录状态及对应的登录信息,具体包括:
基于第一预设登录IP白名单对所述登录IP进行匹配检验,以得到第一检验结果;所述第一检验结果包括检验合格和检验不合格;
当所述第一检验结果为检验不合格时,将用户登录状态确定为拒绝登录;
当所述第一检验结果为检验合格时,采用服务端RSA私钥对所述RSA加密应用编号进行解密,以确定应用编号;
基于预设数据库对所述应用编号进行匹配,以确定预设应用密钥;
将所述预设应用密钥、所述随机字符串和所述登录时间戳进行MD5加密,以得到加密后字符串;
当所述加密后字符串与所述校验字符串不一致时,将用户登录状态确定为拒绝登录;
当所述加密后字符串与所述校验字符串一致时,将用户登录状态确定为允许登录,并随机生成一个UUID字符串;所述UUID字符串为业务令牌。
可选地,所述业务请求数据包括登录IP、业务请求接口地址、预设时间段内业务请求接口调用次数、校验字符串、登录时间戳、随机字符串、预设签名数据和业务请求体;
对所述业务请求数据进行第二登录校验,具体包括:
基于第二预设登录IP白名单对所述登录IP进行匹配检验,以得到第二检验结果;所述第二检验结果包括检验合格和检验不合格;
当所述第二检验结果为检验不合格时,生成拒绝业务请求指令;
当所述第二检验结果为检验合格时,对所述业务请求数据进行登录接口校验;
对所述业务请求数据进行登录接口校验,具体包括:
判断所述业务请求接口地址是否与关系型数据库中允许客户端调用接口的地址一致、所述预设时间段内业务请求接口调用次数是否低于预设次数值;
若所述业务请求接口地址与关系型数据库中允许客户端调用接口的地址不一致,或所述预设时间段内业务请求接口调用次数不低于预设次数值,则生成拒绝业务请求指令;
若所述业务请求接口地址与关系型数据库中允许客户端调用接口的地址一致、且所述预设时间段内业务请求接口调用次数低于预设次数值,则对所述业务请求数据进行基于所述业务令牌的接口验证码校验;
对所述业务请求数据进行基于所述业务令牌的接口验证码校验,具体包括:
基于所述业务令牌确定对应的预设应用密钥;
将所述业务令牌对应的预设应用密钥、所述随机字符串和所述登录时间戳连接后进行MD5加密,以得到所述业务令牌对应的第一加密后字符串;
当所述业务令牌对应的第一加密后字符串与所述校验字符串不一致时,生成拒绝业务请求指令;
当所述业务令牌对应的第一加密后字符串与所述校验字符串一致时,对所述业务请求数据进行签名校验;
对所述业务请求数据进行签名校验,具体包括:
将所述业务令牌对应的预设应用密钥和所述业务请求体连接后进行MD5加密,以得到所述业务令牌对应的第二加密后字符串;
当所述业务令牌对应的第二加密后字符串与所述预设签名数据不一致时,生成拒绝业务请求指令;
当所述业务令牌对应的第二加密后字符串与所述预设签名数据一致时,将所述业务请求体标记为待执行业务数据。
可选地,对所述待执行业务数据依次进行解码和RSA解密,以得到待执行实际业务,具体包括:
对所述待执行业务数据进行Base64解码;
采用服务端RSA私钥对解码后的所述待执行业务数据进行解密,以得到待执行实际业务。
为达上述目的,本发明还提供了如下技术方案:
一种应用程序接口安全防护系统,包括:
登录数据获取模块,用于获取客户端通过单点登录接口发送的用户登录数据;
登录校验模块,用于对所述用户登录数据依次进行第一登录校验和应用密钥校验,以确定用户登录状态及对应的登录信息;所述用户登录状态包括允许登录和拒绝登录;当所述用户登录状态为允许登录时,对应的登录信息为业务令牌;
业务数据获取模块,用于获取客户端通过业务接口发送的业务请求数据;
业务校验模块,用于对所述业务请求数据依次进行第二登录校验、登录接口校验、基于所述业务令牌的接口验证码校验和签名校验,以得到待执行业务数据;
业务解码解密模块,用于对所述待执行业务数据依次进行解码和RSA解密,以得到待执行实际业务;
业务数据调用模块,用于根据所述待执行实际业务确定业务调用数据;
业务数据返回模块,用于对所述业务调用数据依次进行RSA加密和编码后,发送至所述客户端。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明公开一种应用程序接口安全防护方法及系统,对客户端通过单点登录接口发送的用户登录数据依次进行第一登录校验和应用密钥校验,以验证客户端身份防止重放攻击,还可以防止用户越权访问,减小接口收到拒绝服务攻击的可能,减少他人通过之前拦截的请求信息进行调用,或者通过推测请求体各部分内容含义,模拟客户端调用应用程序接口的可能。对客户端通过业务接口发送的业务请求数据进行第二登录校验、登录接口校验、基于所述业务令牌的接口验证码校验和签名校验,防止客户端访问应用程序接口的请求和相应被未经允许查看和篡改。进一步来说,通过第二登录校验防止用户越权访问,通过签名校验防止篡改请求参数,基于所述业务令牌的接口验证码校验通过加密防止应用编号暴露。最后,对待执行业务数据依次进行解码和RSA解密以得到待执行实际业务,根据待执行实际业务确定业务调用数据,对业务调用数据依次进行RSA加密和编码后返回至客户端,保证业务调用结果不被攻击者未经授权查看。本发明实现了基于RSA算法的应用程序接口安全防护,增加了防护范围,提高了防护的安全程度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明应用程序接口安全防护方法的流程示意图;
图2为本发明应用程序接口安全防护系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种应用程序接口安全防护方法及系统,实现基于RSA算法的应用程序接口安全防护。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一
本发明提出一种应用程序接口安全防护方法,基于RSA算法实现。其中,服务端和客户端分别生成RSA秘钥的公钥和私钥存储至关系型数据库,并将公钥提供给对方。服务端只生成一份私钥,需要提供公钥时再用私钥生成公钥提供给客户端。客户端程序访问应用程序接口中使用的应用编号、应用秘钥应由客户提前向服务方申请。
如果需要限制客户方的IP地址,客户方在数据交互之前将IP地址发送至服务端。如果服务端需要限制语序客户方调用的接口,服务方在数据交互之前将允许客户端调用接口的地址存入关系型数据库中,对业务接口要求请求体数据格式为application/json格式,字符串编码为UTF-8。请求参数表如下表1所示,返回信息参考表如下表2和表3所示:
表1请求参数表
表2返回信息参考表一
表3返回信息参数表二
如图1所示,本发明应用程序接口安全防护方法包括:
步骤100,获取客户端通过单点登录接口发送的用户登录数据;所述用户登录数据包括登录IP、校验字符串、RSA加密应用编号、登录时间戳和随机字符串。
在所述客户端内,将随机字符串、登录时间戳(以毫秒计)和客户端对应的应用密钥连接后进行MD5加密以得到校验字符串。在一个具体实施例中,将客户端对应的应用密钥、随机字符串和登录时间戳按顺序以“|”连接成字符串,做MD5摘要运算取得的字符串为校验值(“checkSum”字段),即得到校验字符串。然后将校验字符串、经服务器RSA公钥加密的应用编号(即RSA加密应用编号,为“appIdSec”字段)、登录时间戳(“curTime”字段)、随机字符串(“nonce”字段)一起作为请求头参数通过单点登录接口发送到服务端。
步骤200,对所述用户登录数据依次进行第一登录校验和应用密钥校验,以确定用户登录状态及对应的登录信息;所述用户登录状态包括允许登录和拒绝登录;当所述用户登录状态为允许登录时,对应的登录信息为业务令牌。
步骤200中,对所述用户登录数据进行第一登录校验,即进行白名单拦截,具体包括:
1)基于第一预设登录IP白名单对所述登录IP进行匹配检验,以得到第一检验结果;所述第一检验结果包括检验合格和检验不合格。具体来说,在服务端内检验客户方的IP地址是否在第一预设登录IP白名单中。
2)当所述第一检验结果为检验不合格时,将用户登录状态确定为拒绝登录。具体地,如果客户方IP地址不在白名单中,向客户端返回失败信息,即拒绝登录。
3)当所述第一检验结果为检验合格时,对所述用户登录数据进行第一登录校验,即允许登录操作,登录接口一般不进行权限管理。
步骤200中,对所述用户登录数据进行第一登录校验,具体包括:
1)采用服务端RSA私钥对所述RSA加密应用编号进行解密,以确定应用编号。
2)基于预设数据库对所述应用编号进行匹配,以确定预设应用密钥。具体来说,预设应用密钥为预存在所述预设数据库中各个客户端对应的应用密钥。
3)将所述预设应用密钥、所述随机字符串和所述登录时间戳进行MD5加密,以得到加密后字符串;具体地,对预设应用密钥、随机字符串和登录时间戳进行MD5摘要字符串运算。
4)当所述加密后字符串与所述校验字符串不一致时,将用户登录状态确定为拒绝登录。
5)当所述加密后字符串与所述校验字符串一致时,将用户登录状态确定为允许登录,并随机生成一个UUID(UniversallyUnique Identifier,通用识别码)字符串;所述UUID字符串为业务令牌,将业务令牌、客户端秘钥和业务令牌的第一生成时间一起存储至内存数据库。
在步骤200之后,本发明方法还包括:
1)获取所述业务令牌的第一生成时间。
2)计算所述第一生成时间与所述登录时间戳的差值,以得到登录维持时间。
3)判断所述登录维持时间是否处于预设登录有效期范围内;在一个实际应用中,预设登录有效期范围为5分钟。
4)若所述登录维持时间处于预设登录有效期范围内,则保留所述业务令牌;若所述登录维持时间未处于预设登录有效期范围内,则舍弃所述业务令牌,并返回获取客户端通过单点登录接口发送的用户登录数据的步骤。
具体地,每调用一次接口重新确定业务令牌,超过有效期的,原令牌无效;同一应用编号、同一客户端、重复登录的,原令牌无效。访问除客户端登录外的其他接口均需要提供业务令牌。
设置上述步骤200目的是:通过验证用户身份,避免接口未经许可访问。通过客户端单点登录接口统一授权,使用临时指定的UUID做令牌,配合随机字符串、登录时间戳,可以避免攻击者直接拦截服务端接收过的请求,用它再次请求服务端,即“重放攻击”。同时,使用RSA加密后的字符串代替通常传递的应用编号,可以保护在网络信息传递过程中应用编号不被获取。
步骤300,获取客户端通过业务接口发送的业务请求数据;所述业务请求数据包括登录IP、业务请求接口地址、预设时间段内业务请求接口调用次数、校验字符串、登录时间戳、随机字符串、预设签名数据和业务请求体。
当客户端请求服务端除单点登录登录接口以外的其他接口(以下简称:业务接口)时,服务端通过使用“控制器增强”技术拦截该请求。
在客户端内,将客户端对应的应用秘钥,登录时间戳和随机字符串以“|”按顺序连接,做MD5摘要运算,然后将得到的摘要字符串作为校验字符串(“checkSum”字段)与登录时间戳(“curTime”字段)、随机字符串(“nonce”字段)、业务令牌(“token”字段)一起作为请求头参数发送到服务端。
其中,预设签名数据的确定过程具体包括:在所述客户端中,采用服务端RSA公钥对所述业务请求体进行加密;采用Base64编码,对加密后的所述业务请求体进行编码(如果实际的请求体为空,直接使用空串);将所述客户端对应的应用密钥与编码后的所述业务请求体按顺序以“|”连接后进行MD5加密,以得到预设签名数据。将加密后的请求作为请求体“str”参数,预设签名数据作为请求头“sign”参数发送至服务端。
步骤400,对所述业务请求数据依次进行第二登录校验、登录接口校验、基于所述业务令牌的接口验证码校验和签名校验,以得到待执行业务数据。
步骤400中,对所述业务请求数据进行第二登录校验,即再次进行白名单权限拦截,具体包括:
1)基于第二预设登录IP白名单对所述登录IP进行匹配检验,以得到第二检验结果;所述第二检验结果包括检验合格和检验不合格。
2)当所述第二检验结果为检验不合格时,生成拒绝业务请求指令;当所述第二检验结果为检验合格时,对所述业务请求数据进行登录接口校验。
具体地,检验客户方IP地址是否在第二预设登录IP白名单中,如果不在第二预设登录IP白名单中,向客户端返回失败信息;如果在,则进行下一步的登录接口校验。
步骤400中,对所述业务请求数据进行登录接口校验,具体包括:
1)判断所述业务请求接口地址是否与关系型数据库中允许客户端调用接口的地址一致、所述预设时间段内业务请求接口调用次数是否低于预设次数值。
2)若所述业务请求接口地址与关系型数据库中允许客户端调用接口的地址不一致,或所述预设时间段内业务请求接口调用次数不低于预设次数值,则生成拒绝业务请求指令,向客户端返回失败信息。
3)若所述业务请求接口地址与关系型数据库中允许客户端调用接口的地址一致、且所述预设时间段内业务请求接口调用次数低于预设次数值,则对所述业务请求数据进行基于所述业务令牌的接口验证码校验。
设置第二登录校验和登录接口校验目的是:避免用户越权访问,缩小可能访问业务系统的客户端IP范围,防止拒绝服务或者分布式拒绝服务攻击通过同时发送大量对个别接口的请求占用资源,使服务端崩溃或者其他接口无法正常提供服务。
步骤400中,对所述业务请求数据进行基于所述业务令牌的接口验证码校验,具体包括:
1)基于所述业务令牌确定对应的预设应用密钥。
2)将所述业务令牌对应的预设应用密钥、所述随机字符串和所述登录时间戳连接后进行MD5加密,以得到所述业务令牌对应的第一加密后字符串。具体地,业务令牌对应的预设应用密钥、登录时间戳和随机字符串以“|”按顺序连接,做MD5摘要运算,得到第一加密后字符串。
3)当所述业务令牌对应的第一加密后字符串与所述校验字符串不一致时,生成拒绝业务请求指令,返回失败信息;当所述业务令牌对应的第一加密后字符串与所述校验字符串一致时,对所述业务请求数据进行签名校验。
对所述业务请求数据进行基于所述业务令牌的接口验证码校验,还包括:
1)获取所述业务令牌对应的预设应用密钥的第二生成时间。
2)计算所述第二生成时间与所述登录时间戳的差值,以得到请求维持时间。
3)判断所述请求维持时间是否处于预设请求有效范围内。优选地,所述预设请求有效范围为1分钟内。
4)若所述登录维持时间处于预设登录有效期范围内,则保留所述业务请求数据,然后将所述业务令牌对应的预设应用密钥、所述随机字符串和所述登录时间戳连接后进行MD5加密。
进一步地,若业务请求数据对应的随机字符串与一分钟内其他请求随机字符串相同,则所述业务请求数据无效,舍弃业务请求数据;若业务请求数据对应的随机字符串与一分钟内其他请求随机字符串不同,则保留所述业务请求数据,然后将所述业务令牌对应的预设应用密钥、所述随机字符串和所述登录时间戳连接后进行MD5加密。将应用程序接口访问日志存储到关系型数据库,以对业务请求数据的有效或者无效进行记录。
5)若所述登录维持时间未处于预设登录有效期范围内,则舍弃所述业务请求数据,并返回获取客户端通过业务接口发送的业务请求数据的步骤。
设置接口验证码校验的目的是:防止攻击者通过观察摘要字符串推断应用秘钥;使用业务令牌代替应用编号的原因是防止应用编号泄露,使用业务令牌对应的预设应用密钥的第二生成时间和随机字符串的目的是增大攻击者破解加密方法难度和防止重放攻击。
步骤400中,对所述业务请求数据进行签名校验,具体包括:
1)将所述业务令牌对应的预设应用密钥和所述业务请求体连接后进行MD5加密,以得到所述业务令牌对应的第二加密后字符串。具体地,将业务令牌对应的预设应用密钥和业务请求体用“|”连接,做MD5摘要运算。
2)当所述业务令牌对应的第二加密后字符串与所述预设签名数据不一致时,生成拒绝业务请求指令,返回失败信息;当所述业务令牌对应的第二加密后字符串与所述预设签名数据一致时,将所述业务请求体标记为待执行业务数据。
设置签名校验目的是:防止业务请求体内容被攻击者查看或者使用“透明代理”技术进行篡改。
步骤500,对所述待执行业务数据依次进行解码和RSA解密,以得到待执行实际业务。
步骤500,具体包括:对所述待执行业务数据进行Base64解码;采用服务端RSA私钥对解码后的所述待执行业务数据进行解密,以得到待执行实际业务。即服务端将请求体“str”字段进行Base64解码,再将解码后的字符串使用服务端RSA私钥进行解密。获得实际请求体。
步骤600,根据所述待执行实际业务确定业务调用数据;具体地,通过接口调用地址找到实际处理的改接口业务控制器类和方法,正常进行调用,如果调用失败返回失败信息,否则返回未经加密的调用结果并转换为JSON字符串。
步骤700,对所述业务调用数据依次进行RSA加密和编码后,发送至所述客户端。具体地,使用“控制器增强”技术拦截该方法的正常执行结果,根据客户端公钥将返回的JSON字符串用客户端RSA公钥加密,并用Base64编码,作为返回体“str”字段,并返回给客户端。
设置步骤700的目的是:防止接口的调用结果被攻击者未授权查看。
客户端收到返回体“str”字段后,将str字段Base64解码后的结果使用客户端RSA私钥进行解密,即可获得接口正常调用结果,整个调用过程结束。
实施例二
如图2所示,本实施例为了实现如实施例一中的技术方案,提供了一种应用程序接口安全防护系统,包括:
登录数据获取模块101,用于获取客户端通过单点登录接口发送的用户登录数据;
登录校验模块201,用于对所述用户登录数据依次进行第一登录校验和应用密钥校验,以确定用户登录状态及对应的登录信息;所述用户登录状态包括允许登录和拒绝登录;当所述用户登录状态为允许登录时,对应的登录信息为业务令牌。
业务数据获取模块301,用于获取客户端通过业务接口发送的业务请求数据。
业务校验模块401,用于对所述业务请求数据依次进行第二登录校验、登录接口校验、基于所述业务令牌的接口验证码校验和签名校验,以得到待执行业务数据。
业务解码解密模块501,用于对所述待执行业务数据依次进行解码和RSA解密,以得到待执行实际业务。
业务数据调用模块601,用于根据所述待执行实际业务确定业务调用数据。
业务数据返回模块701,用于对所述业务调用数据依次进行RSA加密和编码后,发送至所述客户端。
相较于现有技术,本发明还具有如下优点:
(1)防止请求被未经许可,直接被他人通过之前拦截的请求信息进行调用,或者,通过推测请求体各部分内容含义,被模拟调用。
相较于现有的不经过客户端单点登录的应用程序接口技术,本发明可以确定客户端的身份,且用户鉴权信息存储只存储在服务端,不存在被木马程序截取的情况。
相较于现有的直接使用应用编号和应用秘钥进行鉴权的应用程序接口安全防护方法,和使用单点登录和加密算法的应用程序接口安全防护技术,本发明通过白名单权限拦截技术,减少了可能访问接口的客户端IP范围,通过在业务接口上使用令牌代替应用编号和使用加密应用编号可以完全避免应用编号暴露、通过拦截的应用程序编号伪造请求。
(2)防止中间的攻击者通过拦截请求,获取、篡改请求体和返回体的信息。签名校验确保请求不被攻击者查看和通过“透明代理”技术篡改;返回内容加密保证调用结果不被攻击者未经授权查看。
(3)防止个别接口的大量请求同时到来,消耗过多资源,拖垮整个服务。通过白名单权限拦截,通过核对请求的接口地址与允许该客户端调用调用接口的地址,防止用户越权访问,并控制在一个时间周期内客户端方法调用量不超过允许的上限。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种应用程序接口安全防护方法,其特征在于,方法包括:
获取客户端通过单点登录接口发送的用户登录数据;
对所述用户登录数据依次进行第一登录校验和应用密钥校验,以确定用户登录状态及对应的登录信息;所述用户登录状态包括允许登录和拒绝登录;当所述用户登录状态为允许登录时,对应的登录信息为业务令牌;
获取客户端通过业务接口发送的业务请求数据;
对所述业务请求数据依次进行第二登录校验、登录接口校验、基于所述业务令牌的接口验证码校验和签名校验,以得到待执行业务数据;
对所述待执行业务数据依次进行解码和RSA解密,以得到待执行实际业务;
根据所述待执行实际业务确定业务调用数据;
对所述业务调用数据依次进行RSA加密和编码后,发送至所述客户端。
2.根据权利要求1所述的应用程序接口安全防护方法,其特征在于,所述用户登录数据包括登录IP、校验字符串、RSA加密应用编号、登录时间戳和随机字符串;
对所述用户登录数据依次进行第一登录校验和应用密钥校验,以确定用户登录状态及对应的登录信息,具体包括:
基于第一预设登录IP白名单对所述登录IP进行匹配检验,以得到第一检验结果;所述第一检验结果包括检验合格和检验不合格;
当所述第一检验结果为检验不合格时,将用户登录状态确定为拒绝登录;
当所述第一检验结果为检验合格时,采用服务端RSA私钥对所述RSA加密应用编号进行解密,以确定应用编号;
基于预设数据库对所述应用编号进行匹配,以确定预设应用密钥;
将所述预设应用密钥、所述随机字符串和所述登录时间戳进行MD5加密,以得到加密后字符串;
当所述加密后字符串与所述校验字符串不一致时,将用户登录状态确定为拒绝登录;
当所述加密后字符串与所述校验字符串一致时,将用户登录状态确定为允许登录,并随机生成一个UUID字符串;所述UUID字符串为业务令牌。
3.根据权利要求2所述的应用程序接口安全防护方法,其特征在于,所述校验字符串的确定过程具体包括:
在所述客户端内,将所述随机字符串、所述登录时间戳和所述客户端对应的应用密钥连接后进行MD5加密,以得到校验字符串。
4.根据权利要求2所述的应用程序接口安全防护方法,其特征在于,在对所述用户登录数据依次进行第一登录校验和应用密钥校验,以确定用户登录状态及对应的登录信息的步骤之后,方法还包括:
获取所述业务令牌的第一生成时间;
计算所述第一生成时间与所述登录时间戳的差值,以得到登录维持时间;
判断所述登录维持时间是否处于预设登录有效期范围内;
若所述登录维持时间处于预设登录有效期范围内,则保留所述业务令牌;
若所述登录维持时间未处于预设登录有效期范围内,则舍弃所述业务令牌,并返回获取客户端通过单点登录接口发送的用户登录数据的步骤。
5.根据权利要求1所述的应用程序接口安全防护方法,其特征在于,所述业务请求数据包括登录IP、业务请求接口地址、预设时间段内业务请求接口调用次数、校验字符串、登录时间戳、随机字符串、预设签名数据和业务请求体;
对所述业务请求数据进行第二登录校验,具体包括:
基于第二预设登录IP白名单对所述登录IP进行匹配检验,以得到第二检验结果;所述第二检验结果包括检验合格和检验不合格;
当所述第二检验结果为检验不合格时,生成拒绝业务请求指令;
当所述第二检验结果为检验合格时,对所述业务请求数据进行登录接口校验;
对所述业务请求数据进行登录接口校验,具体包括:
判断所述业务请求接口地址是否与关系型数据库中允许客户端调用接口的地址一致、所述预设时间段内业务请求接口调用次数是否低于预设次数值;
若所述业务请求接口地址与关系型数据库中允许客户端调用接口的地址不一致,或所述预设时间段内业务请求接口调用次数不低于预设次数值,则生成拒绝业务请求指令;
若所述业务请求接口地址与关系型数据库中允许客户端调用接口的地址一致、且所述预设时间段内业务请求接口调用次数低于预设次数值,则对所述业务请求数据进行基于所述业务令牌的接口验证码校验;
对所述业务请求数据进行基于所述业务令牌的接口验证码校验,具体包括:
基于所述业务令牌确定对应的预设应用密钥;
将所述业务令牌对应的预设应用密钥、所述随机字符串和所述登录时间戳连接后进行MD5加密,以得到所述业务令牌对应的第一加密后字符串;
当所述业务令牌对应的第一加密后字符串与所述校验字符串不一致时,生成拒绝业务请求指令;
当所述业务令牌对应的第一加密后字符串与所述校验字符串一致时,对所述业务请求数据进行签名校验;
对所述业务请求数据进行签名校验,具体包括:
将所述业务令牌对应的预设应用密钥和所述业务请求体连接后进行MD5加密,以得到所述业务令牌对应的第二加密后字符串;
当所述业务令牌对应的第二加密后字符串与所述预设签名数据不一致时,生成拒绝业务请求指令;
当所述业务令牌对应的第二加密后字符串与所述预设签名数据一致时,将所述业务请求体标记为待执行业务数据。
6.根据权利要求5所述的应用程序接口安全防护方法,其特征在于,所述预设签名数据的确定过程具体包括:
在所述客户端中,采用服务端RSA公钥对所述业务请求体进行加密;
采用Base64编码,对加密后的所述业务请求体进行编码;
将编码后的所述业务请求体与所述客户端对应的应用密钥连接后进行MD5加密,以得到预设签名数据。
7.根据权利要求1所述的应用程序接口安全防护方法,其特征在于,对所述待执行业务数据依次进行解码和RSA解密,以得到待执行实际业务,具体包括:
对所述待执行业务数据进行Base64解码;
采用服务端RSA私钥对解码后的所述待执行业务数据进行解密,以得到待执行实际业务。
8.根据权利要求5所述的应用程序接口安全防护方法,其特征在于,对所述业务请求数据进行基于所述业务令牌的接口验证码校验,还包括:
获取所述业务令牌对应的预设应用密钥的第二生成时间;
计算所述第二生成时间与所述登录时间戳的差值,以得到请求维持时间;
判断所述请求维持时间是否处于预设请求有效范围内;
若所述登录维持时间处于预设登录有效期范围内,则保留所述业务请求数据,然后将所述业务令牌对应的预设应用密钥、所述随机字符串和所述登录时间戳连接后进行MD5加密;
若所述登录维持时间未处于预设登录有效期范围内,则舍弃所述业务请求数据,并返回获取客户端通过业务接口发送的业务请求数据的步骤。
9.一种应用程序接口安全防护系统,其特征在于,系统包括:
登录数据获取模块,用于获取客户端通过单点登录接口发送的用户登录数据;
登录校验模块,用于对所述用户登录数据依次进行第一登录校验和应用密钥校验,以确定用户登录状态及对应的登录信息;所述用户登录状态包括允许登录和拒绝登录;当所述用户登录状态为允许登录时,对应的登录信息为业务令牌;
业务数据获取模块,用于获取客户端通过业务接口发送的业务请求数据;
业务校验模块,用于对所述业务请求数据依次进行第二登录校验、登录接口校验、基于所述业务令牌的接口验证码校验和签名校验,以得到待执行业务数据;
业务解码解密模块,用于对所述待执行业务数据依次进行解码和RSA解密,以得到待执行实际业务;
业务数据调用模块,用于根据所述待执行实际业务确定业务调用数据;
业务数据返回模块,用于对所述业务调用数据依次进行RSA加密和编码后,发送至所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310174363.6A CN116108416A (zh) | 2023-02-27 | 2023-02-27 | 一种应用程序接口安全防护方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310174363.6A CN116108416A (zh) | 2023-02-27 | 2023-02-27 | 一种应用程序接口安全防护方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116108416A true CN116108416A (zh) | 2023-05-12 |
Family
ID=86254210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310174363.6A Pending CN116108416A (zh) | 2023-02-27 | 2023-02-27 | 一种应用程序接口安全防护方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116108416A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076089A (zh) * | 2023-10-07 | 2023-11-17 | 荣耀终端有限公司 | 应用管理方法、终端设备及存储介质 |
-
2023
- 2023-02-27 CN CN202310174363.6A patent/CN116108416A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076089A (zh) * | 2023-10-07 | 2023-11-17 | 荣耀终端有限公司 | 应用管理方法、终端设备及存储介质 |
CN117076089B (zh) * | 2023-10-07 | 2024-03-26 | 荣耀终端有限公司 | 应用管理方法、终端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106850699A (zh) | 一种移动终端登录认证方法及系统 | |
CN106576041A (zh) | 客户端与服务器之间相互验证的方法 | |
CN112000951B (zh) | 一种访问方法、装置、系统、电子设备及存储介质 | |
US20080263644A1 (en) | Federated authorization for distributed computing | |
CN106453361B (zh) | 一种网络信息的安全保护方法及系统 | |
CN108322416B (zh) | 一种安全认证实现方法、装置及系统 | |
CN101651666A (zh) | 一种基于虚拟专用网的身份认证及单点登录的方法和装置 | |
CN110933078B (zh) | 一种h5未登录用户会话跟踪方法 | |
WO2010003261A1 (en) | Web application security filtering | |
CN112187931A (zh) | 会话管理方法、装置、计算机设备和存储介质 | |
CN100365974C (zh) | 一种控制计算机登录的设备及方法 | |
CN112861089A (zh) | 授权认证的方法、资源服务器、资源用户端、设备和介质 | |
US9954853B2 (en) | Network security | |
CN106411948A (zh) | 一种基于json验证码的安全认证拦截的方法 | |
CN108111518B (zh) | 一种基于安全密码代理服务器的单点登录方法及系统 | |
CN115842680A (zh) | 一种网络身份认证管理方法及系统 | |
CN116108416A (zh) | 一种应用程序接口安全防护方法及系统 | |
CN112039857B (zh) | 一种公用基础模块的调用方法和装置 | |
CN114268450A (zh) | 一种api接口认证方法及系统 | |
US11627135B2 (en) | Method and system for delivering restricted-access resources using a content delivery network | |
CN116527341A (zh) | 一种客户端调用后端接口鉴权授权安全方法 | |
CN112202706A (zh) | 一种电力系统内网的安全访问方法及装置 | |
CN113794568A (zh) | 接口安全验证方法、访问接口的方法、装置、设备和介质 | |
CN101425925B (zh) | 提供数据通信认证的方法、系统和设备 | |
CN114024682A (zh) | 跨域单点登录方法、服务设备及认证设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |