学习API基础知识

什么是API?

应用程序编程接口(API)允许应用程序相互连接。API允许您以定义的语言与其他web组件交互,以便请求或执行API可用服务的操作。

InsightAppSec利用RESTful API,它比其他API(如SOAP API)更轻量级,使用的带宽更少。

API格式

在本例中,我们将通过InsightAppSec的API与InsightAppSec通信,以执行基本操作。这些操作允许我们在InsightAppSec中自动化通常被视为手动的功能。

InsightAppSec API也有几个基本的API概念。在使用API之前回顾这些概念,以便更好地理解最佳实践,这是有益的。

方法

方法是可以在API调用上下文中执行的不同类型的操作。换句话说,它决定将对指定的资源执行什么操作。本项目的示例中使用了四种常见的API方法。

收到-用于检索信息,而不是修改信息。例如,调用Get Apps端点将从InsightAppSec返回应用程序列表及其相关详细信息。

邮递-用于根据用户提供的数据创建新资源。例如,调用Create Blackout endpoint将根据提供的数据在InsightAppSec中创建一个全新的Blackout。

-用于根据用户提供的某个标识符更新现有资源。例如,对更新扫描配置端点的调用需要指定扫描配置ID,并且会导致根据提供的数据修改该配置。

删去-用于删除资源。例如,对Delete Schedule端点的调用需要一个计划ID,并且会导致删除关联的计划。请小心使用,因为这可能导致数据永久丢失。

标题

在API请求中使用头来提供有关API调用本身的附加信息。这可能包括与授权、缓存和调用中提供的内容类型相关的信息。InsightAppSec API请求中常用的两个标头用于授权和内容类型。

         
1.
headers={“X-Api-Key”:Api_-Key,“内容类型”:“application/json”}

这个X-Api-Key标头允许对InsightAppSec API进行身份验证,而内容类型header指定将在请求中提供JSON主体。

参数

参数是API调用的另一个可变部分。参数是可以在API请求中提供的附加字段,用于指定特定资源或以其他方式影响调用结果。

例如,在调用InsightAppSec Get漏洞端点时,必须提供漏洞ID以指定要检索的漏洞。如果没有该参数,API将无法确定返回哪个漏洞。

InsightAppSec API调用上下文中可用的另一个参数是分类. 添加分类请求的参数将导致响应被相应地排序。例如,当通过Get scans端点检索扫描时,分类可以如下所示使用,以指定应按扫描提交时间的降序返回扫描。

         
1.
排序=扫描。提交时间,描述

身体

请求主体是在进行API调用时用于发送信息的键值对列表。通常需要一个具有邮递请求指定有关正在创建或更新的资源的信息。

例如,在使用InsightAppSec Create Blackout端点时,必须提供一个主体,以便API知道在创建Blackout时要使用哪些详细信息。这包括诸如名称和停电发生的时间等信息,以及与其关联的应用程序(如果有)。

示例JSON正文通常类似于以下内容:

         
1.
{
2.
“名称”:“名称1”,
3.
“描述”:“这是一个描述。”,
4.
“类型”:“类型1”
5.
}

冒号前面的字段是键,后面的字段是值。结果是创建或更新资源,并为每个字段指定其指定值。

正文中所需的数据类型将根据所使用的端点而有所不同,因为不同类型的资源之间总会有不同的字段。

InsightAppSecAPI示例

在本项目的样品目录中,我们使用了几个InsightAppSecAPI端点,并在Python和PowerShell中为它们创建了简单的示例脚本。

两者皆有python动力壳,随附的指南涵盖了使用API时的一般InsightAppSec API概念和最佳实践。从本指南开始,可以更好地理解参数和分页等重复出现的概念。

每个示例都包含一个脚本,演示该端点的使用。每个脚本都处于工作状态,这意味着可以执行它来检索或修改现有InsightAppSec数据。所需的只是一个InsightAppSec API密钥,以及该端点上下文中的任何相关参数。

每个示例还包括一个自述文件,详细介绍了端点的配置和使用。这包括有关格式化端点URL、参数以及如何处理API调用中接收的响应的指导。跟随本自述,逐步了解如何编写脚本以利用该端点。