如何提高API接口的性能和设计安全可靠的API

news2024/11/16 7:40:06

如何提高API接口的性能

下图显示了提高 API 性能的 5 种常见技巧。

分页

这是在结果集较大时常用的优化方法。结果会以流式方式传回客户端,以提高服务响应速度。

异步日志

同步日志每次调用都要处理磁盘,会降低系统速度。异步日志会先将日志发送到无锁缓冲区,然后立即返回。日志会定期刷新到磁盘,这大大减少了 I/O 开销。

缓存

我们可以将经常访问的数据缓存到缓存中。客户端先查询缓存,而不是直接访问数据库。如果出现缓存缺失,客户端可以从数据库中查询。Redis 等缓存将数据存储在内存中,因此数据访问速度比数据库快得多。

Payload 压缩

可以使用 gzip 等对请求和响应进行压缩,从而大大缩小传输数据的大小。这可以加快上传和下载速度。

连接池

访问资源时,我们经常需要从数据库加载数据。打开和关闭数据库连接会增加大量开销。因此,我们应该通过一个开放连接池来连接数据库。连接池负责管理连接的生命周期。

如何设计安全可靠的API ?

① 使用 HTTPS

  • 数据加密:HTTPS 对客户端和服务器之间传输的数据进行加密。它使用 TLS 或其前身 SSL 对通信进行加密。这种加密可确保用户数据、身份验证等敏感信息在传输过程中保持安全。如果没有 HTTPS,这些信息可能会被数据包嗅探等技术截获。

  • 合规要求:许多监管标准,如 GDPR 和 PCI DSS,都要求使用 HTTPS 来保护用户的敏感信息。

  • SEO 要求:谷歌等搜索引擎会优先考虑支持 HTTPS 的网站和应用程序接口,认为它们更安全。

② 使用 OAuth 2.0

OAuth 2.0 对设计安全可靠的 API 至关重要,因为它能够在不共享用户凭证的情况下使用代理来访问资源。它还支持跨多个应用程序和服务的集成,促进了单点登录(SSO),允许用户进行一次身份验证来无缝访问多个服务或应用程序。

③ 使用 WebAuthn

WebAuthn 不依赖于集中式服务器或密码数据库。它允许用户注册和使用自己的设备(如安全密钥或生物特征识别设备)进行身份验证,消除仅依赖密码的弱点。通过实现 WebAuthn,API 可以符合 FIDO 等安全标准,满足合规要求。

④ 使用分级 API Key

我们通常要针对系统开放的服务接口设计不同的访问权限。分级的 API Key 可以提供细粒度的访问控制。比如,在使用 Stripe 时,我们可以给“访问账户”指定一个只读 API Key,给“操作账户”指定另一个 API Key。

⑤ 授权

这一条和上一条相关。我们需要给系统内部的各种 API 接口设计访问授权,遵循“最小权限”原则

⑥ 限流

在设计 API 时,需要估计大致容量,并针对容量来限流,从而保护系统。限流的好处有很多,比如防止 DDos 攻击,防止系统过载,合理分配系统资源等。

⑦ 版本控制

API 版本控制提供了一种结构化的 API 生命周期管理方法,将 API 的管理提升到代码一个级别,同时确保向后兼容性。它使开发人员能够引入新功能而不会破坏用户对于旧版本的依赖。

⑧ 白名单

白名单指定并仅允许预先批准的 IP 地址或用户访问 API。这有助于防止常见的安全威胁,如未经授权的访问、数据泄露、注入攻击等。它提高了潜在攻击者的门槛。

⑨ 定期检查 OWASP API 安全风险清单

The OWASP API Security Top 10 是由 OWASP(Open Web Application Security Project)编制的清单,该组织致力于提高软件安全性。该清单特别突出了与 API 相关的最关键安全风险,旨在提高开发人员、安全专业人员和组织对 API 相关漏洞和威胁的意识,并提供指导,以有效解决这些问题。

⑩ 使用 API 网关

API 网关作为入站 API 请求的集中入口点。它们能够实施诸如身份验证、授权、加密和威胁防护等安全措施。这种集中化能够在所有 API 中应用一致的安全策略。

11 错误处理

有效的错误处理机制使 API 能够优雅地处理意外情况或故障,确保错误得到适当地传达给客户端,提供更好的用户体验。确保返回给客户端的错误消息不会暴露 API 内部运作或基础架构的敏感信息。

12 输入验证

无效或格式不正确的输入数据可能导致数据丢失、损坏或系统崩溃。输入验证在设计安全可靠的 API 中至关重要,有助于防止常见的攻击,如 SQL 注入、NoSQL 注入和其他基于注入的漏洞。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle增量更新备份(更快的备份策略)

正常的备份策略包括:全库备份,full备份,创建镜像备份,累积增量备份以及差异增量备份: 全库备份:如名,对oracle整个数据库进行备份,包括archivedlog,数据文件,…

Verilog刷题笔记37

题目:3位二进制加法器 Now that you know how to build a full adder, make 3 instances of it to create a 3-bit binary ripple-carry adder. The adder adds two 3-bit numbers and a carry-in to produce a 3-bit sum and carry out. To encourage you to actua…

Mixamo动画素材导入UE5的最简单方法

一、Mixamo素材 官网:https://www.mixamo.com/ Mixamo是Adobe公司出品的免费动画库,可商用。软件分为characters(角色)、Animations(动画)两个部分。 二、辅助工具MIXAMO CONVERTER 官网:https://terribilisstudio…

如何做校园圈子小程序,需要哪些功能?APP小程序H5公众号功能齐全,PHP书写,uniAPP。源码交付,支持二开!

最近几年,校园外卖跑腿服务市场迅速兴起。由于学生每天课程繁忙,很多人没有时间去食堂或外面的餐厅用餐,校园外卖跑腿平台提供了便捷和快速的解决方案,满足了学生的饮食跑腿需求,并受到越来越多学生的喜爱。 那么&…

通过esp32cam拍摄图片上传至PC并通过YOLO进行目标检测

通过esp32cam拍摄图片上传至PC并通过YOLO进行目标检测 一.通过esp32cam拍摄照片并上传至PC二.训练自己的数据集三.AutoDL AI算力云的使用1.账号注册2.GPU选取3.GPU使用4.开机训练 四.数据集的使用 一.通过esp32cam拍摄照片并上传至PC 文章链接: https://blog.csdn.net/qq_6297…

【国产】API接口管理平台的产品设计与搭建讲解

【国产接口管理平台】PhalApi Pro (π框架专业版) PhalApi Pro (发音:π框架专业版),是一款国产企业级API接口管理平台,可以零代码、快速搭建API接口开发平台、接口开放平台、接口管理平台。基于PhalApi开源接口开发框架,通过低代…

MySQL安装使用(mac、windows)

目录 macOS环境 一、下载MySQL 二、环境变量 三、启动 MySql 四、初始化密码设置 windows环境 一、下载 二、 环境配置 三、安装mysql 1.初始化mysql 2.安装Mysql服务 3.更改密码 四、检验 1.查看默认安装的数据库 2.其他操作 macOS环境 一、下载MySQL 打开 MyS…

C++的学习

代码练习 输入一个字符串&#xff0c;统计其中大写字母、小写字母、数字、空格以及其他字符的个数 #include <iostream>using namespace std;int main() {cout << "请输入一个字符串" << endl;string str;getline(cin,str);int capital 0;int l…

C语言游戏实战(11):贪吃蛇大作战(多人对战)

成果展示&#xff1a; 贪吃蛇&#xff08;多人对战&#xff09; 前言&#xff1a; 这款贪吃蛇大作战是一款多人游戏&#xff0c;玩家需要控制一条蛇在地图上移动&#xff0c;吞噬其他蛇或者食物来增大自己的蛇身长度和宽度。本游戏使用C语言和easyx图形库编写&#xff0c;旨在…

功能测试转自动化测试好不好转型?

手工测试做了好多年&#xff0c;点点点成了每天必须做的事情。但是随着自动化测试趋势的日渐明显&#xff0c;以及受到薪资、技能的双重考验&#xff0c;掌握自动化测试成为了必备技能。 手工转自动化测试&#xff0c;不是一蹴而就的。“预先善其事&#xff0c;必先利其器”&a…

C++中的RAII原则和资源管理如何提高程序效率和安全性?

文章目录 C中的RAII&#xff08;Resource Acquisition Is Initialization&#xff09;原则是一种编程范式&#xff0c;它确保资源在其生命周期内的有效管理。RAII的核心思想是在对象创建时&#xff08;初始化阶段&#xff09;获取资源&#xff0c;并在对象销毁时&#xff08;析…

C# 8.0+版本项目 string不可为空

1.在某一次新建项目的时候发现&#xff0c;新建的项目&#xff0c;写的测试接口&#xff0c;接口的入参有string的参数&#xff0c; 但是调用接口的时候string的参数没有传报了400&#xff0c;很奇怪&#xff0c;也没有语法错误之类的。 2.解决办法 在项目上右键->属性->…

HTML静态网页成品作业(HTML+CSS)——家乡漳州介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

Flink技术简介与入门实践

架构简介 Flink 是一个分布式流处理和批处理计算框架&#xff0c;具有高性能、容错性和灵活性。下面是 Flink 的架构概述&#xff1a; JobManager&#xff1a;JobManager 是 Flink 集群的主节点&#xff0c;负责接收和处理用户提交的作业。JobManager 的主要职责包括&#xff1…

NASA数据集——亚马逊盆地与其大气边界层之间各种气溶胶和气体交换率的估计值数据

简介 Pre-LBA ABLE-2A and ABLE-2B Expedition Data ABLE 2A 和 2B&#xff08;大气边界层实验&#xff09;数据包括亚马逊盆地与其大气边界层之间各种气溶胶和气体交换率的估计值&#xff0c;以及这些气溶胶和气体在边界层和自由对流层之间的移动过程。前言 – 人工智能教程…

HTML静态网页成品作业(HTML+CSS)——非遗昆曲介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

如何查找、恢复误清空的 Android 回收站?

“我的回收站里有一些照片。当我点击“恢复”时&#xff0c;没有任何反应。我可以将我的 Android 手机插入我的电脑。这样我就可以手动恢复它们。但我在 Android 上找不到 bin 文件夹。我还可以做些什么&#xff1f;” 随着 Android 手机上的文件数量不断增加&#xff0c;了解…

SimplifyRODataLoads - 优化阅读笔记

// 只支持 X86 static cl::opt<bool> SimplifyRODataLoads("simplify-rodata-loads",cl::desc("通过用相应节中找到的常数替换内存操作数&#xff0c;简化来自只读节的加载"),cl::cat(BoltOptCategory));测试用例&#xff1a; ./build4/bin/llvm-li…

【汇编】#3 8086与数据有关的寻址方式

文章目录 操作码与操作数1. 8086处理器的与数据有关的寻址方式1.1 立即数寻址方式1.2 寄存器寻址方式 2. 有效&#xff08;偏移&#xff09;地址&#xff08;effective address&#xff0c;EA&#xff09;与缺省段寄存器选择tips:段跨越前缀2.1 直接寻址tips:直接寻址与立即寻址…

什么是农业气象站?——气象科普

农业气象站&#xff0c;也被称为田间气象站或农业小气候仪&#xff0c;是一款综合的物联网农业气象参数观测系统。它能够实时、准确、有针对性地监测农田区域内的多种气象参数&#xff0c;包括温湿度、光照、二氧化碳浓度、大气压、雨量、土壤温湿度、风速风向等。 农业气象站…