网安云Logo
icon_account
  • 新手指南
  • 平台常见问题
  • 法律条文
  • 任务中心
  • API中心
SourceCheck API接口中心
最近更新时间:2024-10-09 18:00:56

1. 更新历史

序号发布日期版本号说明
12024/08/30v1.0初始创建。
新增签名机制。
新增接口:获取文件上传地址、创建检测任务、检测任务状态查询、检测任务结果-统计、检测任务结果-组件列表、检测任务结果-漏洞列表、检测任务结果-许可列表、查询组件详情、查询漏洞详情、查询许可详情、查询字典。

2. API概览

接口名称接口功能频率限制
获取文件上传地址获取待检测文件上传到OBS的地址不限制
创建检测任务上传文件及发起检测不限制
检测任务状态查询通过检测任务唯一标识查询任务当前检测进度及状态不限制
检测任务结果-统计通过检测任务唯一标识查询任务检测结果,包括组件数量、漏洞数量、许可数量不限制
检测任务结果-组件列表通过检测任务唯一标识查询任务检测结果的组件列表不限制
检测任务结果-漏洞列表通过检测任务唯一标识查询任务检测结果的漏洞列表不限制
检测任务结果-许可列表通过检测任务唯一标识查询任务检测结果的许可列表不限制
查询组件详情通过组件唯一标识查询组件详情不限制
查询漏洞详情通过漏洞的sz编号查询漏洞详情不限制
查询许可详情通过许可简称查询许可详情不限制
查询字典通过字典编码查询字典信息不限制

3. 调用方式

为了保证数据传输过程中的真实性,完整性和不可抵赖,我们需要对数据进行数字签名,签名需要加入秘钥对(accessKeyId与accessKeySecret),在接收签名数据之后进行数据签名校验。签名算法为HMAC-MD5算法,结果为十六进制字符串。签名的目的是为了防止客户端提交的请求以及通知数据被非法篡改。

3.1 获取安全凭证

安全凭证包括 :accessKeyIdaccessKeySecret。

accessKeyId:密钥ID

accessKeySecret:密钥KEY


3.2 生成签名串

3.2.1 排序

首先对所有请求参数按参数名的字典序( ASCII 码)升序排序

注意:

1)所有请求的参数中都需添加13位毫秒值时间戳,5分钟内有效;

2)只按参数名进行排序,参数值保持对应即可,不参与比大小;

3)按 ASCII 码比大小;

4)忽略null值。

请求参数示例

{
    "taskId":"api-test-001",
    "timestamp":1724728924857
}

排序生成压缩JSONString后示例

{"taskId":"api-test-001","timestamp":1724728924857}


3.2.2 生成签名

此步骤生成签名串signature

具体代码如下,以Java语言为例

//创建SecretKey对象 accessKeySecret为密钥ID
SecretKey secretKey = new SecretKeySpec(accessKeySecret.getBytes(StandardCharsets.UTF_8), "HmacMD5");
//获取Mac实例
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
//初始化Mac实例
mac.init(secretKey);
//获取签名
String signature = Hex.encodeHexString(mac.doFinal(data.getBytes(StandardCharsets.UTF_8)))


3.2.3 请求头赋值

所有接口调用时,在请求头中进行赋值

定义类型可选描述
accessKeyIdstringN密钥ID
signaturestringN签名串

请求头示例:

请求体示例:

4. 获取文件上传地址

4.1 接口描述

获取待检测文件上传到OBS的地址

4.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址: https://www.wanyun.cn/gateway/sca/external/upload/url

4.3 输入参数

定义类型可选描述
fileNamestringN文件完整名称(带文件后缀,目前支持3G以内的zip、rar、7z、war、 jar、tar.gz等格式的压缩文件,以及包管理器特征文件。)
timestampLongN13位时间戳

4.4 输出参数

定义类型描述
codeint消息编码
msgstring错误描述
dataobject数据对象
data.fileIdstring文件id
data.temporarySignatureobject华为云OBS临时上传地址信息

华为云OBS临时上传地址信息 temporarySignature:

定义类型描述
signedUrlstring上传地址
actualSignedRequestHeadersobject上传请求头属性
actualSignedRequestHeaders.Content-TypestringContent-Type
actualSignedRequestHeaders.HoststringHost

上传方式代码参考:

JAVA:

import cn.hutool.core.io.FileUtil;
import com.obs.services.model.TemporarySignatureResponse;
import okhttp3.Call;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

import java.io.File;
import java.io.IOException;
import java.util.Map;

public class UploadUtil {
    /**
     * 上传文件示例
     *
     * @param response 调用获取文件上传地址接口返回的数据中的data.temporarySignature
     * @throws IOException
     */
    public static void upload(TemporarySignatureResponse response) throws IOException {
        Request.Builder builder = new Request.Builder();
        for (Map.Entry<String, String> entry : response.getActualSignedRequestHeaders().entrySet()) {
            builder.header(entry.getKey(), entry.getValue());
        }

        String contentType = "application/octet-stream";
        // 要上传的文件
        File file = new File("/file/upload/PurexxxV1.0.zip");
        byte[] fileBytes = FileUtil.readBytes(file);
        // 使用PUT请求上传对象
        Request httpRequest =
                builder.url(response.getSignedUrl())
                        .put(RequestBody.create(MediaType.parse(contentType), fileBytes))
                        .build();
        OkHttpClient httpClient =
                new OkHttpClient.Builder()
                        .followRedirects(false)
                        .retryOnConnectionFailure(false)
                        .cache(null)
                        .build();
        Call c = httpClient.newCall(httpRequest);
        Response res = c.execute();
        System.out.println("Status:" + res.code());
        res.close();
        System.out.println("PutObject successfully");
    }
}

5. 创建检测任务

5.1 接口描述

上传文件及发起检测。

5.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/createTask

5.3 输入参数

定义类型可选描述
taskIdstringN任务唯一ID
taskNamestringN任务名称
callbackUrlstringY回调地址,不为空时,检测完成后根据地址进行回调
fileIdstringN检测文件Id
timestampLongN13位时间戳

5.4 输出参数

定义类型描述
codeint消息编码
msgstring错误描述
dataObject返回数据

5.5 回调数据

回调接口采用POST回调:

定义类型描述
taskIdstring任务唯一ID
taskNamestring任务名称
errorMassagestring错误说明
statusint状态:2:检测成功 3:检测失败
startTimestring开始检测时间
endTimestring结束检测时间

6. 检测任务状态查询

6.1 接口描述

通过检测任务唯一标识查询任务当前检测进度及状态。

6.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/task/status

6.3 输入参数

定义类型可选描述
taskIdstringN任务唯一ID
timestampLongN13位时间戳

6.4 输出参数

定义类型描述
codeint消息编码
msgstring错误描述
dataobject数据对象
data.statusint状态: 0:排队中1:正在检测2:检测完成3:检测失败
data.processstring进度
data.startTimestring检测开始时间
data.endTimestring检测结束时间
data.timestring检测实际时长(单位:秒)

7. 任务检测结果-统计

7.1 接口描述

通过检测任务唯一标识查询任务检测结果,包括组件数量、漏洞数量、许可数量。

7.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/task/statistics

7.3 输入参数

定义数据类型可选描述
taskIdstringN任务唯一ID
timestampLongN13位时间戳

7.4 输出参数

定义类型描述
codeint消息编码
msgstring错误描述
dataobj数据对象
data.componentNumint组件数量
data.vulNumint漏洞数量
data.licenseNumint许可数量

8. 任务检测结果-组件列表

8.1 接口描述

通过检测任务唯一标识查询任务检测结果的组件列表。

8.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/task/components/page

8.3 输入参数

定义类型可选描述
currentintN当前页数,大于0
sizeintN每页行数,1~500
taskIdstringN任务唯一ID
timestampLongN13位时间戳

8.4 输出参数

定义类型描述
codeint消息编码
msgstring信息
okboolean是否成功
dataobject数据对象
data.totalint组件总数
data.currentint页数
data.sizeint每页条数
data.recordsList组件列表

组件详情componentList:

定义类型描述
componentUuidString组件唯一标识
groupIdString组织
artifactIdString组件名称
gradeString风险等级,字典编码:JARRISK(详情见接口3.11)
gradeDescString风险等级描述
versionString版本
recommendVersionString推荐版本
releaseTimeLong发布时间
compomentFixDetailVoListlist解决方案列表

解决方案详情compomentFixDetailVoList

定义类型描述
depRankString依赖类型
depSourceString引用类型标识
depSourceNameString引用类型名称
depScopeString作用域
descString修复建议描述

9. 任务检测结果-漏洞列表

9.1 接口描述

通过检测任务唯一标识查询任务检测结果的漏洞列表,可添加组件唯一标识参数查询本次检测结果中该组件的漏洞列表。

9.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/task/vulnerability/page

9.3 输入参数

定义类型可选描述
currentintN当前页数,大于0
sizeintN每页行数,1~500
taskIdstringN任务唯一ID
componentUuidstringY组件唯一标识
timestampLongN13位时间戳

9.4 输出参数

定义类型描述
codeint消息编码
msgstring信息
okboolean是否成功
dataobject数据对象
data.totalint漏洞总数
data.currentint页数
data.sizeint每页条数
data.recordslist漏洞列表

漏洞详情vulnerabilities

定义类型描述
customSzNoStringsz编号
customCveNoStringCve编号
customCnnvdNoStringCnnvd编号
affectComponentCountInteger影响组件数
customCnvdNoStringCnvd编号
gradeString风险等级,字典编码:CVERISK(详情见接口3.11)
gradeDescString风险等级描述
cweString弱点类型编号
vulnerabilityNameString漏洞名称
cweNameString弱点类型名称
descriptionString漏洞描述
releaseDateLong发布时间

10. 任务检测结果-许可列表

10.1 接口描述

通过检测任务唯一标识查询任务检测结果的许可列表,可添加组件唯一标识参数查询本次检测结果中该组件的许可列表。

10.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/task/vulnerability/page

10.3 输入参数

定义类型可选描述
currentintN当前页数,大于0
sizeintN每页行数,1~500
taskIdstringN任务唯一ID
componentUuidstringY组件唯一标识
timestampLongN13位时间戳

10.4 输出参数

定义类型描述
codeint消息编码
msgstring信息
okboolean是否成功
dataobject数据对象
data.totalint许可总数
data.currentint页数
data.sizeint每页条数
data.recordslist许可列表

许可详情LicenseList

定义类型描述
licenseIdstring许可简称
licenseNamestring许可全称
gradestring风险等级,字典编码:LICENSERISK(详情见接口3.11)
gradeDescstring风险等级描述

11. 查询组件详情

11.1 接口描述

通过组件唯一标识查询组件详情。

11.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/task/component/detail

11.3 输入参数

定义类型可选描述
componentUuidstringN组件唯一标识
timestampLongN13位时间戳

11.4 输出参数

定义类型描述
codeint消息编码
msgstring错误描述
dataobject数据对象
data.groupIdString组织
data.artifactIdString组件名称
data.componentUuidString组件唯一标识
data.gradeString风险等级,字典编码:JARRISK(详情见接口3.11)
data.gradeDescString风险等级描述
data.languageString语言
data.licensesList<String>许可列表
data.jarInfoAddFromString语言字典值, 字典编码COMPUTERLANGUAGE
data.versionString版本
data.recommendVersionString推荐版本
data.releaseTimeLong发布时间
data.homePageString主页
data.sourceCodeString源码
data.latestVersionString最新版本
data.versionEntitiesList<Object>版本信息
data.privatePublicStatusInteger组件状态编码,0 开源,1自研,2开源(未收录),3 非开源,4 开源(已修改),5 自研(废弃)
data.privatePublicStatusNameString组件状态中文
data.countryString所属国家
data.countryChineseNameString所属国家的中文名称

版本信息versionEntities:

定义类型描述
releaseDateString发布时间
versionString版本
gradeString风险等级,字典编码:JARRISK(详情见接口3.11)
gradeDescString风险等级描述

12. 查询漏洞详情

12.1 接口描述

通过漏洞的sz编号查询漏洞详情。

12.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/task/vulnerability/detail

12.3 输入参数

定义类型可选描述
customSzNostringNsz编号
timestampLongN13位时间戳

12.4 输出参数

定义类型描述
codeint消息编码
msgstring错误描述
dataobject数据对象
data.customSzNostringsz编号
data.customCveNoStringCve编号
data.customCnnvdNoStringCnnvd编号
data.customCnvdNoStringCnvd编号
data.gradeString风险等级,字典编码:CVERISK(详情见接口3.11)
data.gradeDescString风险等级描述
data.cweStringCwe
data.descriptionString漏洞描述
data.vulnerabilityNameString漏洞名称
data.cweNameString弱点类型名称
data.releaseDateLong发布时间
data.updateDateLong更新时间
data.announcementString漏洞建议
data.referenceVoListobject参考链接
data.cvss3objectcvss3
data.cvss2objectcvss2
data.cpeList<String>cpe
data.isRepairString是否修复
data.utilizationStringEXP成熟度
data.cnnvdPatchPoList<object>补丁信息
data.vulUseDifficultyString漏洞利用难度
data.vulUseDifficultyDescString漏洞利用难度描述, 字典编码:VULNERABILITYUSEDIFFICULTYTYPE(详情见接口3.11)
data.pocusesTimeStringpoc利用时间

参考链接referenceVoList:

定义类型描述
sourcestring来源
linkstring链接

CVSS3:

定义类型描述
baseScorestringcvss3基础分数
impactstringcvss3影响
developAblestringcvss3可开发性
attackWaystringcvss3攻击途径
attackComplexitystringcvss3攻击复杂度
userInteractionstringcvss3用户交互
usabilityImpactstringcvss3可用性影响
integrityEffectstringcvss3完整性影响
confidentialityImpactstringcvss3机密性影响
scopestringcvss3作用域
permissionstringcvss3权限要求

CVSS2:

定义类型描述
baseScorestringcvss2基础分数
impactstringcvss2影响
developAblestringcvss2可开发性
attackWaystringcvss2攻击途径
attackComplexitystringcvss2攻击复杂度
usabilityImpactstringcvss2可用性影响
integrityEffectstringcvss2完整性影响
confidentialityImpactstringcvss2机密性影响
authenticationstringCvss2认证

cnnvdPatchPo

定义类型描述
patchIdstring补丁编号
titlestring补丁名称
linkstring补丁链接地址
publishDatestring补丁发布时间
szIdstring该补丁所修复的漏洞编号
referenceUrlstring参考网址

13. 查询许可详情

13.1 接口描述

通过许可简称查询许可详情。

13.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/task/license/detail

13.3 输入参数

定义类型可选描述
licenseIdstringN许可简称
timestampLongN13位时间戳

13.4 输出参数

定义类型描述
codeint消息编码
msgstring错误描述
dataobject数据对象
data.detailsUrlString详细地址
data.gradeString风险等级,字典编码:LICENSERISK(详情见接口3.11)
data.gradeDescString风险等级描述
data.referenceString参考地址
data.licenseNameString许可全称
data.licenseIdString许可简称
data.osiString字典编码:COMFIRM(详情见接口3.11)
data.fsfString字典编码:COMFIRM(详情见接口3.11)
data.descriptionString描述信息
data.allowlist允许许可权限
data.attentionlist注意许可权限
data.mustlist必须许可权限
data.expireboolean是否过期,true:是,false:否

allow:

定义类型描述
permissionsstring许可权限(允许)
descriptionstring许可权限(允许描述)

attention:

定义类型描述
permissionsstring许可权限(注意)
descriptionstring许可权限(注意描述)

must:

定义类型描述
permissionsstring许可权限(必须)
descriptionstring许可权限(必须描述)

14. 字典

14.1 接口描述

通过字典编码查询字典信息

14.2 请求定义

请求方式:post

请求头类型:Content-Type: application/json

请求地址:https://www.wanyun.cn/gateway/sca/external/dict/type/list

14.3 输入参数

定义类型可选描述
dictTypestringN字典编码
timestampLongN13位时间戳

14.4 输出参数

定义类型描述
codeint消息编码
msgstring错误描述
dataList<Dict>数据对象

Dict

定义类型描述
dictKeystring字典编码
dictValuestring字典名称
sortint排序




客服
免费试用
获取资源