当前位置: 首页 > news >正文

如何保护 API 安全

为了收集有关 API 管理当前和未来状态的见解,我们邀请来自 18 家公司的 IT 专业人士分享他们的想法。我们问他们:“哪些技术和工具对于保护 API 最有效?” 他们告诉我们的是:

验证
我们经常向已知的 B2B 合作伙伴提供 API 访问权限。在这种情况下,将 API 访问限制为仅合作伙伴 IP 地址(白名单)的功能非常强大。您仍然需要进行身份验证和速率限制,但您已将流量减少到仅已知的合作伙伴。这消除了向更广泛的互联网开放的 API 上出现的大量恶意流量,例如暴力尝试获取访问权限和拒绝服务攻击。
即使设置了 IP 白名单,设置 API 网关仍然是最佳实践。这有助于身份验证并确保后端仅接收格式正确的 API 调用。 
最常见的是 OAuth 和OAuth2,用于 API 之间的通信和安全通信。下面是基于令牌和基于声明的身份验证,其中 API 来回传递数字签名的令牌,以验证令牌是否代表调用者。 
提供商实施的身份验证不均衡。即使使用 OAuth,其他人保留令牌的方式也可能是一个问题。代币的生命周期是如何管理的?令牌会刷新吗?在我们自己的基础设施中,我们使用一次性令牌,其范围主要限于我们想要执行的操作类型。它归结为安全令牌管理和基于证书的身份验证。 
始终在授权之前对 API 进行身份验证 — 进行 API 身份验证的方法有很多,但多因素身份验证是通常推荐的方法。对于 API,使用外部进程(例如通过 OAuth 协议)获取访问令牌是很常见的。身份验证密钥最为敏感,必须妥善保管;但是,建议使用管理存储来自动化整个过程。
也就是说,仅凭身份验证不足以授予对 API 的访问权限,应该有一个授权步骤来确定哪些资源可以访问 API。检查授权是否正确的方法有多种,包括基于内容的访问控制 (CBAC)、基于角色的访问控制 (RBAC) 或基于策略的访问控制 (PBAC) — 这些方法可确保业务数据得到充分保护,免受未经批准的访问。 
速率限制
确保 API 环境的安全涉及每个 API 接触点——对 API 客户端(第三方应用程序和开发人员或微服务)进行身份验证和授权、限制 API 调用速率以减轻分布式拒绝服务 (DDoS) 攻击以及保护处理处理请求的后端应用程序。 API 调用。
用于保护 API 的一些技术和工具包括: 
1) 使用 JSON Web 令牌 (JWT) 来验证和授权 API 客户端 - 这些令牌包括有关客户端的信息,例如管理权限或到期日期。当客户端向 JWT 提供其 API 请求时,API 网关会验证 JWT 并验证其中的声明是否与您为客户端请求的资源设置的访问策略相匹配。
2)定义和实施访问控制策略,仅允许某些类型的客户端执行写入操作或访问定价等敏感数据。
3) 定义基于角色的访问控制,仅允许某些用户(例如特定组织内的开发人员)发布暴露敏感信息(例如定价或库存水平)的 API。
4) 通过应用速率限制策略来保护 API 本身,该策略为 API 网关每秒(或其他时间段)从指定源(例如客户端 IP 地址)接受的请求数量设置阈值。
5) 使用 HTTPS 保护后端应用程序 — API 网关和处理 API 请求的后端系统之间的流量应使用 HTTPS 协议。 
断路器 - 限制和配额 — 一个好的做法是强制执行每个应用程序的数据使用配额,以便后端在发生 DoS、DDoS 攻击时不会受到影响,或防止未经授权的用户不当使用 API。每个资源的限制和配额不仅可以起到断路器的作用,还可以防止在不必要的使用激增期间对下游系统产生负面影响。具有配额和限制等策略的复杂 API 管理平台可以提供此功能。 
更广泛的
我们的 API 安全方法中的三个关键领域:
1) 采用规范性方法
2) 仔细考虑应用程序身份如何与用户身份相关联
3) 从身份验证之外的最广泛意义上考虑 API 安全性,以减少入侵尝试。
规范模型:客户转向 OAuth 2 并覆盖 Open ID Connect。OAuth 2 有很多选择,Open ID 限制了选择并指导人们采用最佳实践。最终,最好实施一个清晰易懂的标准。类似于存储领域,考虑安全性、可用性和可扩展性之间的平衡。
应用程序和用户身份的角色:有许多 API 管理供应商尝试同时做到这两点。它只是不可扩展。身份管理是如此强大,以至于您无法跟上变革和新标准的步伐。我们与外部身份管理解决方案集成,并具有完全开箱即用的集成或 OAuth2 和 Open ID 用例。我们有开放的接口供客户根据需要将我们替换为他们自己的实现。
对于更广泛的安全问题:我们采取分布式实施安全的方法。默认情况下,API 管理的重点是提供 API 网关。我们采取的方法是 API 网关应该专注于流量的身份验证和授权。我们建议采用多层方法,并在具有 Apache Mod Security 的单独层中包含 Web 应用程序防火墙。当部署额外的安全性时要部署到网络边缘。最后是使用启发式或机器学习来监控流量行为并确定流量是否是恶意的。
其他
API 管理安全仍然是人们苦苦挣扎的领域之一。我们需要认识到 API 本质上是不安全的。我们需要重新学习 API 的安全性,并了解正在遭受攻击的互联网脆弱性。云提供商更加成熟。AWS 和 Azure API 管理工具提供了额外的安全层。考虑用户名、密码、密钥的安全性,并了解谁在使用您的 API。想想现在的数据,API 暴露的遗留系统在保护现有数据方面具有相同的思维方式。更多 API 消耗更多用户数据 — 如何存储以及在何处存储? 
API 可能在两个主要方面构成安全风险。首先,依赖关系就像一组俄罗斯娃娃。在您的依赖项内部是依赖项的依赖项……在它们内部是您的依赖项、依赖项'、依赖项'等等。从功能角度来看,这使得每个开发组织都可以专注于为其添加最大价值的代码。
然而,从安全角度来看,作为最终消费者,您继承了整个漏洞链。应用程序安全专业人士必须超越基本的软件组成分析,将已知的 CVE 与版本字符串进行匹配,因为它们只深入一层。例如,Jackson-databind 是一个流行的开源库,在许多第三方通信SDK 中得到利用。 
困扰该库许多版本的“jacksploit”反序列化漏洞可供某些 SDK 用户利用,但 Jackson-databind 的易受攻击版本已被混淆且无法被传统 SCA 识别。因此,安全专业人员必须寻找能够评估源代码如何工作的工具,而不是依赖于查找 CVE 数据库。
其次,由于 API 经常在外部传递数据,因此映射关键数据流以确保关键数据不会无意中泄漏到 API 中非常重要。这意味着要确定哪些变量至关重要,并绘制它们从源头到汇点的旅程以及途中的所有转换。这样,在将泄漏的路线投入生产之前,可以在开发过程中捕获未加密或未编辑的关键数据。 
您需要拥有良好的 API 管理平台。它将强制执行您制定的规则和角色,以控制谁有权访问哪些数据。您可以使用带有选项的网关或平台,或者使用内置的身份验证和授权工具。能够以友好、易于配置的方式控制访问。Web 界面是执行和控制谁有权访问的最佳方式,无需部署或深入服务器并更新复杂的配置或文件。在网关级别进行控制,然后就可以轻松配置或管理。 

相关文章:

如何保护 API 安全

为了收集有关 API 管理当前和未来状态的见解,我们邀请来自 18 家公司的 IT 专业人士分享他们的想法。我们问他们:“哪些技术和工具对于保护 API 最有效?” 他们告诉我们的是: 验证 我们经常向已知的 B2B 合作伙伴提供 API 访问权…...

工业机器视觉megauging(向光有光)使用说明书(十五,轻量级的visionpro)

程序(软件)的一些不足和建议:(后续会跟进) 不足:(如果你发现了,谢谢及时提出来) 1,找线工具有噪点抑制功能;blob跟随工具,匹配跟随工…...

Linux e2fsck命令教程:如何检查和修复文件系统(附案例详解和注意事项)

Linux e2fsck命令介绍 e2fsck是一个用于检查Linux第二扩展文件系统(ext2fs)的命令。它也支持包含日志的ext2文件系统,这些文件系统有时也被称为ext3文件系统。该命令会自动保存找到的坏块到文件系统中,以便这些硬盘的部分不再被使…...

TypeScript 的安装与使用

npm i typescript -g依赖会安装 tsc 命令 tsc -v初始化 配置 tsc --init生成 tsconfig.json tsconfig.json 配置 要支持 import 模块语法的话 rollup的配置 target 选项需要设置 ES5 module 选项需要改成 es2015 esbuild 的配置 target: ESNext module: ESNext moduleReso…...

Git版本管理配置说明 - Visual Studio

一、 Git服务端配置 在源代码管理服务器新建文件夹,并配置共享访问权限Everyone(读取/写入)。 在本地访问这台服务器共享目录,确保正确打开。 在VS中打开项目,点选Git更改,点击“创建Git仓库”,创建项目初始版本。 弹出如下对话框: 因为我们只是在局域网中开发项…...

Rust语言项目实战(四) - 界面绘制与渲染

回顾 前面的章节中,我们已经完成了下面的工作: 准备所需的音频文件设置游戏所需的屏幕和键盘配置创建了游戏主循环并在其中实现按键Esc或q退出游戏的功能游戏退出前还原配置 目前游戏的界面还是一片空白,本章我们开始为游戏在终端上绘制并…...

动态规划学习——回文串

目录 一,回文子串 1.题目 2.题目接口 3,解题代码及其思路 解题代码: 二, 分割回文串II 1,题目 2,题目接口 3,解题思路及其代码 一,回文子串 1.题目 给你一个字符串 s &…...

优化你的计算机性能:如何根据 CPU 占用率决定硬件升级

优化你的计算机性能:如何根据 CPU 占用率决定硬件升级 一、引言二、CPU 占用率的意义与影响三、监测和评估 CPU 占用率四、判断硬件升级需求的依据五、硬件升级方案和建议六、总结 一、引言 计算机性能优化是提升计算机系统整体效能的过程,它对于用户和…...

探索低代码之路——JNPF

目录 一、低代码行业现状 二、产品分析 1.可视化应用开发 2.流程管理 3.整个平台源码合作 三、架构和技术 技术栈 四、规划和展望 低代码平台(Low-code Development Platform)是一种让开发者通过拖拽和配置,而非传统的手动编写大量代…...

Day01 嵌入式 -----流水灯

一、简单介绍 嵌入式系统中的流水灯是一种常见的示例项目,通常用于演示嵌入式系统的基本功能和控制能力。流水灯由多个发光二极管(LED)组成,这些LED按照一定的顺序依次点亮和熄灭,形成一种像水流一样的流动效果。 二、…...

Redis集群详解

1.1 什么是Redis集群 Redis集群是一种通过将多个Redis节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许Redis在不同节点上同时提供服务,提高整体性能和可靠性。根据搭建的方式和集群的特性,Redis集群主要有三种模式:主从复制…...

【随笔】个人面试纪录

面试被问了几个问题。 1.mount怎么用 没答上来&#xff0c;说的 --help 可以看 mount --help | less mount [ --source ] <source> | [ --target ] <target> 2.ansible怎么用&#xff0c;有哪些常用的模块 ansible <hosts|all> -m <module> 常用的模块…...

Vue3的reactive、ref、toRef、toRefs用法以及区别

在 Vue3 中&#xff0c;reactive, ref, toRef, toRefs 都是用于创建响应式数据的方法。它们之间的主要区别在于它们的使用方式和返回值类型。 reactive&#xff1a;用于将一个普通对象转换为响应式对象。当对象的属性发生变化时&#xff0c;视图会自动更新。 import { reacti…...

微信小程序:input双向绑定

微信小程序&#xff1a;input双向绑定 微信小程序&#xff1a;input双向绑定1 数据容器准备2 输入组件准备3 逻辑代码准备4 总结实战示例1.wxml文件导入2.js文件导入 微信小程序&#xff1a;input双向绑定 <说明> PS&#xff1a;该笔记采用渐进式编程&#xff0c;使每一步…...

RT-Thread ADC_DMA

看到这里&#xff0c;相信大家已经尝试过网上各类ADC_DMA传输的文章&#xff0c;且大多都并不能实现&#xff0c;因为在RT-Thread中并没有找到关于ADC的DMA接口&#xff0c;在官方例程中有关DMA的传输也只有一个串口接收的介绍&#xff0c;找遍全网怕也没能找到真正有用的消息。…...

生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin

文章目录 前言1、IDEA打包工具&#xff1a;Artifacts1.1 创建Artifacts1.2 选择第三方jar文件1.3 打包Artifacts1.4 测试jar包 2、maven-shade-plugin2.1、pom文件添加2.2、打包2.3、测试jar包 总结 前言 当我们编写完Java程序后&#xff0c;为了提高执行效率通常会将应用程序…...

idea 插件开发日志绑定问题

错误日志 Searchable options index builder completed SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIC/2021.2/b0727ceddea2b62b16825db9308e14a470198…...

Elasticsearch(ES)概述

文章目录 一.什么是Elasticsearch?1.正向索引和倒排索引2.Mysql和ES的概念对比3.安装elasticsearch、kibana 二.IK分词器三.索引库操作四.文档操作五.RestClient操作索引库1.初始化RestClient2.创建索引库3.删除索引库4.判断索引库是否存在 六.RestClient操作文档1.新增文档2.…...

网络入门---网络编程初步认识和实践

目录标题 前言准备工作udpserver.hpp成员变量构造函数初始化函数(socket,bind)start函数(recvfrom) udpServer.ccudpClient.hpp构造函数初始化函数run函数(sendto) udpClient.cc测试 前言 在上一篇文章中我们初步的认识了端口号的作用&#xff0c;ip地址和MAC地址在网络通信时…...

Linux系统安装Docker-根据官方教程教程(以Ubuntu为例)

Linux系统安装Docker-根据官方教程教程&#xff08;以Ubuntu为例&#xff09; 1. 背景介绍2. 环境配置2.1 软件环境要求2.2 软件下载2.3 文档地址2.3 必备命令工具下载 3. 安装Docker3.1 使用root用户操作后续命令3.2 卸载可能存在的旧版本 4. 安装Docker4.1 更新依赖包4.2 配置…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...