文档中心 Flood Shield 2.0 User Guide 创建并维护API资产

创建并维护API资产

更新时间:2024-11-15 18:05:01

在配置API安全策略前,您需要先创建并维护API资产列表。

新增API

在左侧导航栏中点击“API资产”,进入API资产管理页面。在API定义子页面中,您可以点击“新增API”按钮创建新的API。配置内容包含“基础信息”、“请求Body和参数限制”两部分。

基础信息

基础信息包含“基础配置”、“API端点配置”和“鉴权配置”。

  • 基础配置
    • API名称:自定义API的名称,不可与已有的API重名。
    • API分组:自定义API的分组名称。
    • 所属域名:选择API所归属的域名。
    • 备注:填写API的备注信息。
  • API端点配置:
    • 请求方法:指定API支持的请求方法,如:GET、POST、DELETE、UPDATE等。不在指定的请求方法之内的相关API请求将被认为是非法的。
    • API类型:指定API的类型。
      • 普通接口:路径中不包含query string参数的普通接口,如:http://www.test.com/api。
      • when-case接口:路径中包含query string参数,如:http://www.test.com/api?action=1与http://www.test.com/api?action=2是两个不同的接口。
    • 端点路径:指定API的路径。
      • 完整匹配:需输入完整路径,示例:/order/v1
      • 正则匹配:需输入正则表达式匹配端点路径,示例:/order/*
    • 匹配路径参数:开启匹配路径参数后,您可以使用大括号({})来定义端点路径的参数。例如有多个路径参数时,可配置为:/basePath/{pathParam1},{pathParam2},{pathParam3}。配置的路径参数根据其定义的参数名,可前往“请求Body与参数限制”进行进一步的参数合规配置。
    • 大小写敏感:指定端点路径是否区分大小写。若大小写敏感,示例:/Order 和 /order为两不同的API路径。
    • 鉴权配置
      • 免鉴权:无需对接口进行鉴权认证,进入其他检测流程;
      • 秘钥对鉴权:客户端通过网宿默认生成的密钥及算法生成鉴权令牌,可为需验证的鉴权令牌配置具体的参数名称、参数位置及鉴权有效期。

鉴权令牌的生成需客户端配合开发,详见鉴权配置

请求Body和参数限制

请求Body和参数限制包含“请求Body限制”和“参数限制”。

  • 请求Body限制:为请求Body定义合规内容,提供Body最大限制、JSON嵌套层数、JSON参数个数等最大值约束,同时限制请求的Content-Type,控制接收Body的安全范围,防止API收到规模过大的请求。启用后将允许执行请求Body限制, 违反限制的请求将按“API安全”策略下配置的处理动作执行。
    • Content-Type:指定请求Body的Content-Type,选择“任意”可允许请求头中携带任意类型content-type;选择“为空不存在”则禁止请求使用任何类型content-type。
      • FORM表单:仅允许Content-Type为FORM表单类型,如:application/x-www-form-urlencoded。
      • JSON:仅允许Content-Type为JSON的类型,如:application/json。
      • 任意:允许请求头中携带任意类型的content-type。
      • 为空不存在:禁止请求携带content-type,携带任何类型content-type均为不合法请求。
    • Body最大限制(bytes):允许请求Body大小的最大限制,大于此限制的API请求将被认为是非法的。
    • 最大嵌套层数:输入允许请求Body中JSON嵌套层数的最大值,大于此限制的API请求将被认为是非法的。
    • JSON最大参数个数:输入允许请求body中JSON参数个数的最大值,大于此限制的API请求将被认为是非法的。
  • 参数限制:为请求参数定义合规内容,对接口参数名、参数类型、参数范围、是否必带等参数合规性进行精细化校验,有效防止在未知参数的情况下非法调用接口。所有位置的参数默认执行宽松模式,仅检测有配置的参数;Query String参数可特殊定义开启严格模式,需配置完整请求参数。启用后将允许执行请求参数限制, 违反限制的请求将按“API安全”策略下配置的处理动作执行。
    • Query String参数检测模式
      • 宽松模式(优先选择):仅检测有配置的部分参数,请求中未配置的参数将不受限制。
      • 严格模式(慎重选择):将按照白名单形式严格校验接口中的所有参数,及发起请求的参数必须要在配置的参数列表中,注意需配置接口完整Query String参数。

当“基础信息-API端点配置”中API类型选择为“when-case接口”时,若要启用严格模式,需要将when-case接口路径中的Query String参数作为参数配置到参数限制中,以保障严格模式下参数白名单的完整度,否则会影响严格模式的参数匹配。

在“基础信息-API端点配置”中勾选了需要支持的请求方法后,需要在此为各个请求方法定义参数合规规范。支持定义参数的请求方法有:GET、POST、PUT、HEAD、PATCH、OPTIONS、DELETE。

  • 非请求Body参数的定义
    • 参数名称:参数的名称。
    • 参数位置:参数出现的位置。支持Http Header、Query String、Cookie和路径参数。
    • 参数类型:参数的类型。支持整数、数字、字符串、布尔和枚举。
      • 数值范围:当选择“整数”或“数字”时,可以指定数值的范围。数值包含首尾,即[最小值,最大值]。
      • 字符长度:当选择“字符串”时,可以指定字符串的长度范围。数值包含首尾,即[最小值,最大值]。当参数值包含中文字符时,选择字符串类型,一个中文字符需配置的长度为3。示例:id=测试,则参数id需配置的长度为6。
      • 布尔值:当选择“布尔”时,布尔值默认为“true;flase”。
      • 枚举:当选择“枚举”时,可以指定枚举项,枚举字典示例:true;false。
    • 必带参数?:当选择“是”时,请求必须携带此参数,未携带此参数的请求则为非法请求。
    • 备注:可填写当前参数的备注信息。
  • 请求Body参数的定义:开启“Body参数定义”开关以启用此功能,关闭时Body参数的定义将不会生效。支持“Form表单”和“JSON格式定义”两种配置方式。
    • Form表单:当选择“Form表单”时,配置方式与“非请求Body参数的定义”一致。
    • JSON格式定义:当选择“JSON格式定义”时,需要按照JSON格式定义请求Body的参数格式。
      • 参数名称:参数的名称。
      • 参数类型:参数的类型。支持整数、数字、字符串、布尔、枚举、数组和JSON对象。根节点仅可选择数组或JSON对象。
      • 数值范围”、“字符长度”、“布尔值”、“枚举”和“必带参数?”的配置方式与“非请求Body参数的定义”一致。

当参数类型为“数组”时,需进一步配置数组内参数的具体类型,同一数组内的参数类型需保持一致。比如:当参数类型选择"数组",数组的参数类型配置为"数字"时,则数组内的数据均要满足为“数字”类型。

批量导入API

如果您希望批量导入一批已知的API,那么您可以在“API定义”子页面直接点击“导入API”。在弹窗中,参照引导内容完成API信息的填写,并点击“确认导入”。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!