开发规范:API安全

开发规范:API安全

API是现代移动、SaaS和web应用程序的关键组成部分,可以应用在面向客户、合作伙伴和内部应用程序中。API可以暴露应用程序逻辑和敏感数据。不安全的API很容易成为黑客攻击的目标,使他们能够访问安全的服务器或网络。攻击者可以试图执行中间人攻击(MITM)、分布式拒绝服务攻击(DDoS)、注入或破坏访问控制等攻击。

以下是一些通用的API安全建议:

API 资产管理

列出并记录应用程序的所有接口。

必须了解API的暴露及别了解这些信息将有助于更好地定义哪些API安全控制必须加强,哪些必须使用默认的安全设置:

  • 内部API:内部访问的API,无需暴露在因特网,通过内部服务、后端/员工应用程序或合作伙伴通过VPN或其他安全手段在内部访问。

  • 外部API:暴露在互联网上的API,外部用户可以访问,不管他们是合作伙伴还是客户端。

对于API本身,我们可以根据以下几点对API进行分类:

  • 应用程序是由内部团队开发的还是由第三方合作伙伴开发的?
  • 应用程序是由另一个API/后端应用程序访问还是由前端应用程序访问?

不支持的版本:

  • 除了发布到互联网上的当前API版本之外,API不能有任何其他版本,任何特性都必须包含到最新的版本中,以符合最新的安全需求和最佳实践。
  • 较旧的和开发版本的API必须只能在开发环境中访问,在开发环境中不能使用任何真实的客户数据。

授权安全

  • 接口只能通过系统服务帐户运行,而不能通过任何个人帐户运行。
  • API密钥身份验证:内部API必须在所有场景中使用基于API密钥或其他类型的强身份验证,限制对每个端点的访问的方式,即使攻击者可以通过网络访问我们的内部虚拟网络。
  • API密钥最小权限授权架构:内部API密钥必须具有定义良好的基于角色的访问控制 (RBAC),以便分配它们以限制每个密钥只使用它们所需的权限功能,从而减少数据泄漏风险。

跨域访问:

  • 跨域请求必须使用安全机制(如跨源资源共享(CORS))和限制性策略(例如限制来自某些主机、域或禁用证书)。
  • 跨域请求的源报头必须在服务器端得到授权。
  • 服务应该实现最大请求限制(每个客户端或时间间隔)。
  • WebSockets必须使用wss:// schema和源报头额外的服务器端授权来传输所有机密数据。

安全配置

安全配置错误不仅会暴露敏感的用户数据,还会暴露应用系统的细节信息,可能导致整个服务器遭到破坏。

注入验证

执行输入验证是为了确保只有格式正确的数据才进入信息系统的工作流,防止格式错误的数据保存在数据库中,从而触发下游各个组件的故障。输入验证应该在数据流中尽可能早地进行,最好是在从外部接收到数据时进行。
  因此,我们的API接收的所有输入都必须经过验证,以便发现任何恶意输入或无效的信息尝试。这些检查必须对任何API的使用者进行,即使他们是内部的,因为他们可能有意或无意中输入的一些恶意的字符发送给API。
实现依赖于安全策略的正确输入验证控制。

防止过多的数据暴露

API通过设计将敏感数据返回给客户端。这些数据通常在客户端进行过滤之后呈现给用户。攻击者可以很容易地通过嗅探流量并查看敏感数据。
对于每个API的输出都应该进行规范化和细粒度:API必须有标准化的输出,考虑输出的颗粒度以最小化数据泄漏的风险,例如对用户ID或任何单一信息的请求应该只返回该信息,而不是与用户相关的所有数据。

  • 明确地显式定义和强制执行所有API方法返回的数据,包括响应模式、字符串模式、字段名和错误信息。
  • 检查来自API的响应,确保它们只包含合法的数据。
  • 定义应用程序存储和使用的所有敏感和个人信息(PII),并检查所有API调用和返回此类信息是最小必要的。
  • 不要依赖客户端来执行敏感数据过滤。

资源和速率限制

如果 API 不对客户端/用户可以请求的资源的大小或数量施加任何限制,这不仅会影响 API 服务器性能,导致拒绝服务 (DoS),而且还会为诸如蛮力攻击之类的身份验证缺陷敞开大门。

  • API必须实施访问速率的限制,以减少身份验证攻击的可能性或其他的恶意使用,并通过实现锁定策略防止滥用使用和可能的暴力尝试攻击。
  • 限制客户端在定义的时间范围内调用API的频率。实际的限制必须在每个API定义的基础上,分析可能的用例,如互联网开放API,将有许多用户但每个用户请求并不多,而相反在与合作伙伴进行数据处理的后端API中,单个用户请求会比较大。
  • 对于敏感操作,如登录或密码重置,应对通过API认证的方式、客户端IP地址、用户属性等实现对API进行速率限制。
  • 当超过限制数量时或重新设置新的和限制时间,须通知相关人员。
  • 为查询字符串和请求体参数添加适当的服务器端验证,特别是控制响应中返回的记录数量的参数。
  • 如果API接受压缩文件,在扩展文件之前检查压缩比,以对抗“zip炸弹攻击”

充分的日志和监控

日志记录和监控不足,再加上与事件响应的缺失或无效,使得攻击者可以进一步攻击系统、更持久地、转向更多的系统,进行篡改、获取或破坏数据。
因此,API也必须生成安全日志,并将这些日志集成到监视和SIEM(安全信息和事件管理)系统中。应该记录所有的在源系统和目标系统之间API事务和事件。

必须记录的信息如下:

  • 应用程序特性尝试失败
  • 拒绝请求/错误时使用的Key
  • 输入验证失败
  • 任何安全/使用策略失败

日志中不包括:

  • 敏感数据
  • 财务数据
  • 用户数据
  • 日志模式也应该在应用程序之间进行规范化,但是仍然需要定义确切的模型。

参考链接

  1. OWASP API Security Top 10 2019: https://owasp.org/www-project-api-security/
  2. NIST Guidelines on API Security: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-204.pdf
  3. Cloud Security Alliance - API Security: https://cloudsecurityalliance.org/artifacts/security-guidance-api/
  4. Microsoft - API security best practices: https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design
  5. RapidAPI Developer Guide to API Security: https://rapidapi.com/blog/api-security-best-practices/

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/581418.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NXP i.MX8系列平台开发讲解 - 3.9 Linux PCIe协议相关介绍(二)

目录 1. PCIe 传输层协议 2. TLP介绍 2.1 TLP包格式 2.2 TLP包的种类 2.3 TLP 包传输例子 2.4 TLP 路由规则 根据上一章的知识,对于PCIe的发展和基础知识有了大概了解,本章节将会讲解PCIe的一些工作原理,使用的协议,通信交互…

挑战一周完成Vue3项目Day2:路由配置+登录模块+layout组件+路由鉴权

一、路由配置 经过分析,项目一共需要4个一级路由:登录(login)、主页(home)、404、任意路由(重定向到404)。 1、安装路由插件 pnpm install vue-router 2、创建路由组件 在src目…

dremio数据湖sql行列转换及转置

1、行转列 (扁平化) 数据准备 表 aa 1.1 cross join unnest 在Dremio中,UNNEST 函数用于将数组或复杂类型的列(如JSON、Map或Array类型)中的值“炸裂”(分解)成多行. with aa as ( select 上海 as city, ARRAY[浦东…

2024程诺申论突击理论刷题班

2024程诺申论突击理论刷题班,为备考者提供了系统而高效的申论学习平台。在这个班里,程诺老师以其深厚的理论功底和丰富的教学经验,引导我们深入理解申论的本质和技巧。刷题环节精心设计,让我们在实战中巩固知识,提升能…

Professional CUDA C Programming

2023/4/28 1.使用nvfrof时,报错 解决方法: 将路径 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\extras\CUPTI\lib64 下的文件cupti64_2020.2.0.dll复制到路径 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin下即可。 2…

Innodb底层原理与Mysql日志机制到底怎么个事???

在学完Innodb底层原理与Mysql日志机制,自己进行总结,画了一张脑图,思路清晰许多 希望对大家也能有点帮助

Visual Studio Code基础:打开一个编辑器(文件)时,覆盖了原编辑器

相关阅读 VS codehttps://blog.csdn.net/weixin_45791458/category_12658212.html?spm1001.2014.3001.5482 在使用vscode时,偶尔会出现这样的问题:打开了某个编辑器(文件,下面统称文件)后,再打开其他文件…

安装JAVA和java IDEA并汉化过程

1.安装java: 打开java的下载链接: Java Downloads | Oracle 然后选择对应的版本下载即可,我这里是windows 所以下载这个 然后正常一步步安装即可。 2.配置java环境: 在桌面右键此电脑然后点击属性——高级系统设置——环境变量——然后…

ACE框架学习3

ACE Acceptor-Connector框架 该框架实现 Acceptor-Connector 模式,该模式解除了“网络化应用中的协作对端服务的连接和初始化”与“连接和初始化之后它们所执行的处理”的耦合。Acceptor-Connector 框架允许成用独立于它们所提供的服务来配置其连接布局的关键属性。…

【万字长文】看完这篇yolov4详解,那算是真会了

前言 目标检测作为计算机视觉领域的一个核心任务,其目的是识别出图像中所有感兴趣的目标,并给出它们的类别和位置。YOLO(You Only Look Once)系列模型因其检测速度快、性能优异而成为该领域的明星。随着YOLOv4的推出,…

网络安全的防护措施有哪些?

1. 安全策略和合规性 2. 物理和网络安全 3. 数据加密 4. 软件和系统更新 5. 访问控制 6. 威胁监测和响应 7. 员工培训和安全意识 8. 备份和灾难恢复 零基础入门学习路线 视频配套资料&国内外网安书籍、文档 网络安全面试题 网络安全的防护措施多种多样&#xff0c…

JVM的垃圾回收机制(GC机制)

在Java代码运行的过程中,JVM发现 某些资源不需要再使用的时候,就会自动把资源所占的内存给回收掉,就不需要程序员自行操作了。“自动回收资源”就是JVM的“垃圾回收机制”,“垃圾回收机制”也称"GC机制"。 对于Java代码…

排序算法(2)快排

交换排序 思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 一、冒泡排序 public static…

Sarcasm detection论文解析 | 通过阅读进行讽刺推理-Reasoning with sarcasm by reading in-between

论文地址 论文地址:[1805.02856] Reasoning with Sarcasm by Reading In-between (arxiv.org) 论文首页 笔记大纲 通过阅读进行讽刺推理论文笔记 📅出版年份:2018📖出版期刊:📈影响因子:🧑文章作者:Tay Yi,Luu Anh…

FIR滤波器——DSP学习笔记三(包含一个滤波器设计的简明案例)

​​​​​​ 背景知识 FIR滤波器的特性与优点 可精确地实现线性相位响应(Linear phase response),无相位失真; 总是稳定的,所有极点都位于原点 线性相位FIR滤波器的性质、类型及零点位置 冲击响应满足:奇…

挺看好的一位实习生,顶峰见!

大家好,我是程序员鱼皮。今天我要分享自己团队里一位全栈实习生的实习总结。 在实习期间,这位同学参与了多个项目的工作,包括企业动态公告系统的开发、企业周边系统的搭建、撰写技术教程、开发 IDEA 插件、构建云端管理平台等等。 实习近 3…

个人学习总结__打开摄像头、播放网络视频的以及ffmpeg推流

前言 最近入手了一款非常便宜的usb摄像头(买回来感觉画质很低,没有描述的4k,不过也够用于学习了),想着利用它来开启流媒体相关技术的学习。第一步便是打开摄像头,从而才能够对它进行一系列后续操作,诸如实…

网动统一通信平台存在任意文件读取漏洞

声明: 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 简介 网动统一通信平台(ActiveUC&#xff09…

AEMTO--一种自适应进化多任务优化框架

AEMTO–一种自适应进化多任务优化框架 title: Evolutionary Multitask Optimization With Adaptive Knowledge Transfer author: Hao Xu, A. K. Qin, and Siyu Xia. journal: IEEE TRANSACTIONS ON EVOLUTIONARY COMPUTATION (TEVC) DOI&…

基于SpringBoot+Vue校园竞赛管理系统的设计与实现

项目介绍: 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,竞赛信息因为其管理内容繁杂,管理数量繁多导致手工进行…