-
[置顶]软件接口设计怎么做?前后端分离软件接口设计思路
本文关于软件接口设计怎么做?前后端分离软件接口设计思路。好的系统架构离不开好的接口设计,因此,真正懂接口设计的人往往是软件设计队伍中的稀缺型人才。为什么在接口制定标准中说:一流的企业做标准,二流的企业...
-
[置顶]接口管理如何做?接口实现版本管理的意义和最佳方法
本文关于接口管理如何做?接口实现版本管理的意义和最佳方法。API版本管理的重要性不言而喻,对于API的设计者和使用者而言,版本管理都有着非常重要的意义。下面会从WEB API 版本管理的角度提供几种常...
-
[置顶]实现API管理系统的关键
下面将通过几个关键词的形式说明API管理的重要性和未来的实现方式。1.生命周期管理在整个API生命周期中更深入地集成所有工具将进一步提高生命周期循环的速度,而且更重要的是提供满足消费者需求的API。这...
-
您的App集成HMS Core SDK调用Safety Detect service。
请求TSMS服务器签名检测结果。
您的App请求自己服务检测结果。
典型场景
应用需要检测系统完整性时,调用系统完整性检测API,检测系统完整性是否被破坏,针对不安全设备采取相应的措施。api安全检测系统
应用开发
调用SysIntegrity API主要分为三个步骤:
获取nonce。在调用Safety Detect SysIntegrity API时,您必须传入一个nonce值。在检测结果中会包含这个nonce值,您可以通过校验这个nonce值来确定返回结果能够对应您的请求,并且没有被重放攻击。如果nonce值长度超出16-66字节范围,将导致调用失败,请参考下方注意说明内容。注意
nonce值必须满足以下条件:
推荐的做法是从发送到您的服务器的数据中派生nonce值。
一个nonce值只能被使用一次。
nonce值必须为16至66字节之间。
请求Safety Detect SysIntegrity。
Safety Detect SysIntegrity提供两个接口,调用只有参数上的不同,都需要传入的参数是nonce和APP ID。sysIntegrity(SysIntegrityRequest sysIntegrityRequest)接口还需要在SysIntegrityRequest中传入签名的验证方式,这个将和您获取的JWS的Header中alg一致。
登录AppGallery Connect网站,点击“我的项目”。
在项目列表中找到您的项目,在项目中点击需要配置签名证书指纹的应用。api接口检测系统
在“项目设置 > 常规”页面的“应用”区域,可以查看应用的APP ID。
JavaKotlin
nonce:上一小节我们获取的nonce值。
APP ID:您可以通过如下方式获取APP ID。
private void invokeSysIntegrity() {
SafetyDetectClient mClient = SafetyDetect.getClient(getActivity());
// TODO(developer): Change the nonce generation to include your own, used once value,
// ideally from your remote server.
byte[] nonce = ("Sample" + System.currentTimeMillis()).getBytes();
SysIntegrityRequest sysintegrityrequest = new SysIntegrityRequest();
sysintegrityrequest.setAppId("3*******");
sysintegrityrequest.setNonce(nonce);
sysintegrityrequest.setAlg(alg);
Task task = mClient.sysIntegrity(sysintegrityrequest);
task.addOnSuccessListener(new OnSuccessListener<SysIntegrityResp>() {
@Override
public void onSuccess(SysIntegrityResp response) {
// Indicates communication with the service was successful.
// Use response.getResult() to get the result data.
String jwsStr = response.getResult();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
// An error occurred while communicating with the service.
if (e instanceof ApiException) {
// An error with the HMS API contains some
// additional details.
ApiException apiException = (ApiException) e;
// You can retrieve the status code using
// the apiException.getStatusCode() method.
Log.e(TAG, "Error: " + SafetyDetectStatusCodes.getStatusCodeString(apiException.getStatusCode()) + ": " + apiException.getMessage());
} else {
// A different, unknown type of error occurred.
Log.e(TAG, "ERROR:" + e.getMessage());
}
}
});
}
在您的服务器中验证检测结果。
HMS Core帮助您将验证结果发送到华为服务器校验证书的准确性并将完成校验的结果通过SysIntegrityResp返回,使用此对象的getResult方法获取响应,格式为JSON WEB签名(JWS)。
{
"advice": "RESTORE_TO_FACTORY_ROM",
"apkCertificateDigestSha256": ["gwpz0q/WtjtJZZK5lTXl74fI/8QAKGLAhdhlznKkLhQ="],
"apkDigestSha256": "nBrInk2DLVQrgcQ1DXYnIUIMnjJ+mVo0lwUicF7OzJM=",
"apkPackageName": "com.huawei.hms.safetydetectsample",
"appId": "1*******",
"basicIntegrity": false,
"detail": ["root", "unlocked"],
"nonce": "UjJScmEyNGZWbTV4YTJNZw==",
"timestampMs": 1612683290520
}
解析JWS,获取header、payload、signature。
从header中获取证书链,使用Huawei CBG Root CA证书对其进行验证。
校验证书链中的叶证书域名,域名:sysintegrity.platform.hicloud.com。
从signature中获取签名,校验其签名。
从payload中获取完整性验证结果,格式和样例摘录如下:
当检测结果中basicIntegrity为false,您可以根据自身功能对安全的要求决定是否提醒用户。
一种API接口调用路径异常的检测方法及系统公开时间:2022-04-19本发明公开了一种API接口调用路径异常的检测方法及系统,具体涉及API安全技术领域,包括步骤一、持续地从大量的正常用户的访问路径中提取API的调用关系,不断扩展调用关系集合;步骤二、使用异常检测方法,找出异常的调用路径。本发明针对每个应用,从大量数据中抽取频繁调用路径,构成调用路径集合;对调用路径序列,使用n‑gram方法抽取特征,并使用异常检测算法,识别异常的调用路径;将预先得到的调用关系集合,用于调用路径的异常检测;持续地从大量正常的调用路径数据中抽取调用路径关系,构建调用关系集合,然后使用机器学习方法,检测异常的调用路径,并结合调用关系集合对异常调用路径进行再次确认,降低误报。技术领域
本发明涉及API安全技术领域,更具体地说,本发明涉及一种API接口调用路径异常的检测方法及系统。api快速检测系统
背景技术
应用程序编程接口(Application Programming Interface,API)是一些预先定义好的,用于提供特定服务的接口,应用通过API接口对外提供服务,用户通过API接口访问应用,获取服务。
用户在请求服务时,通常会发生多个接口的调用,接口的调用关系遵循业务逻辑的设计,部分接口之间的调用是有先后顺序的,先调用A接口,再调用B接口。但有些接口在开发时,开发者使用了简单易用的web开发框架,忽略了对用户权限的审查,导致接口存在未授权访问的漏洞,使得攻击者能够不遵循业务逻辑的调用顺序访问应用,造成数据泄漏的风险。
调用路径异常属于业务逻辑风险,传统方法难以检测到。现有的对API调用路径异常的检测方法,通常是根据业务逻辑接口文档,预先设定调用路径异常的告警规则,命中规则就认为是异常行为,进行告警。这种方法存在以下缺陷:1、需要对业务逻辑有详细的理解,耗费人工;2、规则不够灵活,只能检测到规则设定的异常行为。因此,针对API调用路径异常的检测,是本领域值得研究的问题。
发明内容
为了克服现有技术的上述缺陷,本发明的实施例提供一种API接口调用路径异常的检测方法及系统,本发明所要解决的技术问题是:如何解决现有技术中调用路径异常难以检测到的问题。
为实现上述目的,本发明提供如下技术方案:一种API接口调用路径异常的检测系统,整个系统说明如下:
步骤一、持续地从大量的正常用户的访问路径中提取API的调用关系,不断扩展调用关系集合;
步骤二、对当前的一批数据,使用异常检测方法,找出异常的调用路径;
步骤三、利用调用关系集合,对步骤二中的异常结果进行再次确认,对确认为异常的结果进行告警。api数据安全检测系统
本发明还包括一种API接口调用路径异常的检测方法,具体检测步骤如下所示:
S1、对每个应用,提取调用关系集合;
S1.1、数据提取:提取当前时间之前的一段时间的事件数据,并根据应用不同,对数据分组;
S1.2、数据预处理:对每组数据,从事件中提取相关字段,构成结构化数据记录;
S1.3、调用路径提取:利用关联分析算法,从大量的调用路径数据中,提取频繁调用路径;
S1.4、调用路径存储:将当前得到的调用关系集合,更新到数据库中;
S2、调用路径异常检测;
S2.1、数据提取:提取过去一段时间窗口内的数据,并以IP为主体,对调用路径按发生时间排序,提取API访问路径序列;
S2.2、特征提取:对每个主体的API访问路径序列,使用n-gram方法提取特征;
S2.3、特征向量化:对步骤S2.2中得到的n-gram特征,使用TF-IDF对特征向量化表示,每个主体表示为一维向量;
S2.4、异常检测:使用机器学习中的异常检测算法,对当前数据进行异常检测,得到异常的调用路径;
S3、异常行为确认;
S3.1、对每个异常结果,根据应用提取对应的调用关系集合;
S3.2、根据调用关系集合,对当前的异常调用路径序列,计算一个分值;
S3.3:若分值低于阈值,可认为是异常,产生一条异常告警。api检测系统是什么
在一个优选地实施方式中,所述步骤S1中每个应用提取调用关系集合方法为:采用离线系统,定时运行一次,利用关联分析算法,从用户的调用路径数据中提取频繁调用关系,添加到调用关系集合。
在一个优选地实施方式中,所述步骤S1.2中数据预处理以IP作为主体,对多条事件的数据进行聚合操作,得到每个主体的API访问路径。
在一个优选地实施方式中,所述步骤S1.3中调用路径提取时,考虑访问API的前后关系,并设定支持度阈值,出现次数大于支持度阈值的路径,可认为是频繁路径,将其添加到调用关系集合中。
在一个优选地实施方式中,所述步骤S2中调用路径异常检测判定方法:一个窗口内的数据,大量是正常的,少量是异常的,并且,异常的行为与正常行为有明显不同,基于这两个特点,使用异常检测算法寻找异常的调用路径。
在一个优选地实施方式中,所述步骤S3中异常行为确认利用调用关系集合对调用路径异常检测的结果进行确认,降低误报率。
在一个优选地实施方式中,所述步骤S3.2中异常调用路径序列分值的计算具体步骤:对调用路径序列中的每个子序列,出现在调用关系集合中的给出一个分值1,未出现在调用关系集合中的给出一个分值2,对当前调用路径序列计算综合得分。
本发明的技术效果和优点:
本发明针对每个应用,从大量数据中抽取频繁调用路径,构成调用路径集合;对调用路径序列,使用n-gram方法抽取特征,并使用异常检测算法,识别异常的调用路径;将预先得到的调用关系集合,用于调用路径的异常检测;持续地从大量正常的调用路径数据中抽取调用路径关系,构建调用关系集合,然后使用机器学习方法,检测异常的调用路径,并结合调用关系集合对异常调用路径进行再次确认,降低误报。
附图说明
图1为本发明的整体框架示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种API接口调用路径异常的检测系统,整个系统说明如下:
步骤一、持续地从大量的正常用户的访问路径中提取API的调用关系,不断扩展调用关系集合;
步骤二、对当前的一批数据,使用异常检测方法,找出异常的调用路径;
步骤三、利用调用关系集合,对步骤二中的异常结果进行再次确认,对确认为异常的结果进行告警。
如图1所示的,实施方式具体为:本发明还包括一种API接口调用路径异常的检测方法,具体检测步骤如下所示:
S1、对每个应用,提取调用关系集合:采用离线系统,定时运行一次,利用关联分析算法,从用户的调用路径数据中提取频繁调用关系,添加到调用关系集合;
S1.1、数据提取:提取当前时间之前的一段时间的事件数据,并根据应用不同,对数据分组;
S1.2、数据预处理:对每组数据,从事件中提取相关字段,构成结构化数据记录;以IP作为主体,对多条事件的数据进行聚合操作,得到每个主体的API访问路径;
S1.3、调用路径提取:利用关联分析算法,从大量的调用路径数据中,提取频繁调用路径;考虑访问API的前后关系,并设定支持度阈值,出现次数大于支持度阈值的路径,可认为是频繁路径,将其添加到调用关系集合中;
S1.4、调用路径存储:将当前得到的调用关系集合,更新到数据库中;
S2、调用路径异常检测:一个窗口内的数据,大量是正常的,少量是异常的,并且,异常的行为与正常行为有明显不同,基于这两个特点,使用异常检测算法寻找异常的调用路径;
S2.1、数据提取:提取过去一段时间窗口内的数据,并以IP为主体,对调用路径按发生时间排序,提取API访问路径序列;
S2.2、特征提取:对每个主体的API访问路径序列,使用n-gram方法提取特征;
S2.3、特征向量化:对步骤S2.2中得到的n-gram特征,使用TF-IDF对特征向量化表示,每个主体表示为一维向量;
S2.4、异常检测:使用机器学习中的异常检测算法,对当前数据进行异常检测,得到异常的调用路径;
S3、异常行为确认:利用调用关系集合对调用路径异常检测的结果进行确认,降低误报率;
S3.1、对每个异常结果,根据应用提取对应的调用关系集合;
S3.2、根据调用关系集合,对当前的异常调用路径序列,计算一个分值;具体地,对调用路径序列中的每个子序列,出现在调用关系集合中的给出一个分值1,未出现在调用关系集合中的给出一个分值2,对当前调用路径序列计算综合得分;
S3.3:若分值低于阈值,可认为是异常,产生一条异常告警。
本发明工作原理:
参照说明书附图1,用户访问应用时,访问路径多样,其中有些接口在业务逻辑上是相关的,这些接口之间的调用关系是确定的;如果一条调用路径序列中存在不符合调用关系的行为,就认为是异常调用;当调用路径出现异常时,可能存在某种风险行为,
正常的访问路径,在特定接口的调用顺序上存在一致性或相似性,而异常的访问路径不符合这种性质;可根据正常访问路径与异常访问路径的不同,利用调用路径的上下文信息,通过对上下文的分析,发现API调用路径上的异常行为,本发明提出一种API调用路径异常的检测方法及系统;首先,持续地从大量正常的调用路径数据中抽取调用路径关系,构建调用关系集合,然后使用机器学习方法,检测异常的调用路径,并结合调用关系集合对异常调用路径进行再次确认,降低误报。
最后应说明的几点是:首先,在本申请的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变,则相对位置关系可能发生改变;
其次:本发明公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计,在不冲突情况下,本发明同一实施例及不同实施例可以相互组合;
最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。