REST API 的安全基础

构筑安全REST API(NodeJS)的最佳实践 在我们深入探讨在 Node.js 中保护 REST API 的细节之前,让我们首先了解什么是 REST API。REST(即表述性状态传输)是一种用于设计网络应用程序的架构风格。REST API 是一组用于构建 Web 服务并与之交互的规则和约定。它基于无状态、客户端-服务器通信以及统一资源标识符 (URI) 的使用等原则运行。在开发安全的 REST API 时,定义路由是一个基本步骤。创建一个名为routes并包含 API 不同方面的路由文件的目录。例如,让我们从一个。 阅读详情

REST 是一种现代架构风格,它定义了一种设计 Web 服务的新方法。和之前的 HTTP 以及 SOA 不同,它不是一个协议(即:一套严格的规则),而是一些关于 Web 服务应该如何相互通信的一些建议和最佳实践。按照 REST 最佳实践开发的服务被称为 “RESTful Web 服务”。

安全性是 RESTful 服务的基石。启用它的方法之一是尽可能内置用户身份验证和授权机制。

在 RESTful 服务中实现用户身份验证和授权的方法有很多。我们今天要讲的主要方法(或标准)有:

  • Basic 认证
  • OAuth 2.0
  • OAuth 2.0 JWT

为了让我们的讨论更加具体,假设我们的后端程序有微服务,并且每个用户请求时,必须调用后端的几个服务来返回请求的数据。所以,我们将不仅从安全性问题方面,而且在它们产生的额外流量和服务器负载的背景下检查每个标准。下面开始吧…

Basic 认证

最古老也是最简单的标准。

看起来像: 用户名 密码 Base64(对用户名和密码做哈希的基础算法)。

工作原理:加入有人尝试登录用户的 Fackbook 账户,去访问他的消息、历史记录、群组信息,这些都是独立的服务。当用户输入用户名和密码后,系统会允许登录。但是,默认情况下,系统不知道用户的角色和权限是什么,他们可以访问哪些服务等等。

所以每次用户尝试访问任何一个服务的时候,系统都应该再次验证是否允许执行这个操作,这意味着需要对身份验证进行额外的调用。就我们的示例中有四个服务而言,在这种情况下,每个用户将有四个额外的调用。

现在假设每秒有 3k 个请求,在 Facebook 的系统中每秒 300k 请求更现实。将这请求乘以四,结果是每秒要向服务器发出 12k 次调用。

总结:可伸缩性差,大量的额外流量(额外调用)没有带来业务价值,服务器的负载很大。

OAuth 2.0

看起来像:用户名 密码 访问令牌 过期令牌

工作原理:OAuth 2.0 标准的核心思想是,用户使用用户名和密码登录系统后,客户端(用户访问系统的设备)会收到一对令牌,这是一个访问权限令牌和刷新令牌。

访问令牌用于访问系统中的所有服务。到期后,系统使用刷新令牌生成一对新的令牌。所以,如果用户每天都进入系统,令牌也会每天更新,不需要每次都用用户名和密码登录系统。刷新令牌也有它的过期时间(虽然它比访问令牌长得多),如果一个用户一年没有进入系统,那么很可能会被要求再次输入用户名和密码。

OAuth 2.0 标准取代了基本的身份验证方法,它具有一定的优势,例如用户每次想要进入系统时不用输入用户名和密码。但是,系统仍然需要调用身份验证服务器,就像使用基本身份验证方法时一样,以检查拥有该令牌的用户有权限做什么。

假设有效期是一天。这意味着登录服务器上的负载要少得多,因为用户每天只需要输入一次凭证,而不是每次都要进入系统。但是,系统仍需要验证每个令牌并检查用户角色的存储状态。所以我们最终还要调用身份验证服务器。

总结:和 Basic 验证有相同的问题 - 可伸缩性差,身份验证服务器负载较高。

OAuth2 JSON Web 令牌

看起来像:用户名 密码 JSON数据 Base64 私钥 到期日期

工作原理:当用户第一次使用用户名和密码登录系统时,系统不仅会返回一个访问令牌(只是一个字符串),而是一个包含所有用户信息的 JSON 对象,比如角色和权限,使用 Base64 进行编码并使用私钥签名。下图是它在没有编码的情况下的样子:

看起来很可怕,但这确实有效!主要区别在于我们可以在令牌中存储状态,而服务保持无状态。这意味着用户自己拥有自己的信息,不需要额外的调用来检查它,因为所有的内容都在令牌里。这对于减少服务器负载方面是一个很大的优势。这个标准在世界范围内得到广泛应用。

总结:良好的可伸缩性,可以和微服务一起工作。

新玩意:亚马逊签名方式

一种全新的,奇特的方法,称为 HTTP 签名,亚马逊是目前使用它的大厂之一。

它的思路是,当你创建亚马逊帐户的时候,会生成一个永久的、非常安全的访问令牌,你要非常小心地存储起来并且不要给任何人显示。当你要从 Amazon 请求某些资源时,你可以获取到所有相关的 http 头信息,使用这个私钥对其进行签名,然后将签名的字符串作为 header 发送。

在服务器端,亚马逊也有你的访问密钥。它们接下来做什么?只需要使用你的 http 头信息和这个密钥进行签名。然后将签名字符串和你作为签名的字符串进行比较;如果相同那么就知道你是谁。

最大的好处是你只需要发送一次用户名和密码 - 就可以获得令牌。至于使用私钥签名的 header 信息,基本上没有机会对它们进行编码。就算有人截获了信息——谁在乎呢 ;)

英文原文:https://yellow.systems/blog/rest-security-basics

本文由博客一文多发平台 OpenWrite 发布!

利用 AWS Signature:REST API 认证的安全指南 AWS Signature 是一种通过对发送到 AWS 服务的 API 请求创建安全的签名哈希的协议。:与 AWS 账户关联的唯一标识符。:用于生成加密哈希的机密密钥,确保只有授权用户才能签名请求。:包含 HTTP 方法、请求路径、查询字符串和头部的标准化字符串。:从规范化请求、日期和其他元素派生出的字符串,最终签名以创建 AWS Signature。签名请求会包含在 Authorization 头部中,使 AWS 可以验证请求。 阅读详情

相关推荐

REST API 设计艺术:幂等性、分页和安全性

RESTAPI设计最佳实践图解解析:该图表系统呈现了RESTAPI设计的核心要素,重点突出三个关键维度:1)幂等性设计,通过Redis存储IdempotencyKey实现请求去重;2)分页机制,推荐cursor-based方案解决传统limit/offset的性能瓶颈;3)安全体系,详细展示JWT的三段式结构及HS256签名验证流程。图表采用模块化设计,通过色彩编码和箭头连接直观呈现API版本控制、HTTP状态码映射等基础规范,并特别强调工程实践中的常见陷阱与解决方案,如幂等键的TTL设置、分页数据漂移问题

sonadorje的专栏 1167

使用 Spring Security 保护 Spring Boot REST API

1. 简介 在本教程中,我们将 Spring Security 与 Spring Boot 集成。我们将看到如何在 Spring Boot 应用程序中使用 Spring Security 保护 REST API。在本教程中,我们将使用 Spring Boot 创建一个简单的 REST API 并对其进行保护。您可以说本教程是实际开始使用 Spring Security 的第一步。我们不会使用任何数据库来保存用户名和密码。我们还将了解当有人尝试访问资源时如何获取登录页面。我们将使用 Spring Secur

allway2的博客 1088

构建安全的Spring Boot Java REST API

PostgreSQL拥有许多现代数据库系统共有的特点,例如支持ACID事务、子查询、触发器、视图等。它还支持多种特性,如复杂的查询、外键、事务完整性、MVCC等,使其成为一个非常成熟且功能全面的数据库系统。同时,PostgreSQL还支持多种编程语言的API,包括Python、Java、C/C++、.NET等,这使得PostgreSQL能够轻松集成到各种应用程序中。安装PostgreSQL通常涉及以下步骤:从官方网站下载适合您操作系统的安装包。按照平台特定的安装说明进行安装。

weixin_36431814的博客 1275

7 大 REST API 安全威胁

在开发 REST API 时,必须从一开始就注意安全性。可以考虑使用内置了许多安全特性的现有 API 框架。在 Rest Case 中,我们使用的是 SugoiJS API 框架,除测试和安全指导之外,我们还为其代码库做出了贡献。通过这种方式,安全性被统一地内置,并且开发人员可以更专注于应用程序的逻辑。在这之后,不要忘记分配资源来测试 API 的安全性。一定要测试本文中所提到的所有安全威胁。

Explinks的博客 1321

REST API安全表达能力分析

本文系统分析了多种基于REST的API描述语言在表达安全策略方面的能力,发现现有语言在认证、授权及机密性、完整性等安全机制支持上存在显著局限,尤其缺乏对TLS属性和资源表示安全的全面描述,亟需标准化的安全框架支持。

l1k9j8h7g6的博客 944

REST API 安全设计指南.pdf

REST API 安全设计指南。REST的全称是REpresentational State Transfer,它利用传统Web特点,提出 提出一个既适于客户端应用又适于服务端的应用的、统一架构,极大程度上统一及简化了网站架构设计。 目前在三种主流的Web服务实现方案中,REST模式服务相比复杂的SOAP和XML-RPC对比来讲,更加简 洁,越来越多的web服务开始使用REST设计并实现。但其缺少安全特性,《REST API 安全设计指南》就 是一个REST API安全设计的指南,权当抛砖引玉,推荐网站后台设计及网站架构师们阅读。

确保端点安全的 7 大 REST API 安全策略

REST 是表述性状态传输 (Representational State Transfer)的缩写,是一种定义网络应用程序设计约束和原则的架构风格。反过来,REST API 是这些有关客户端和服务器之间通信的原则的实际体现。REST 的核心在于简单性。RESTful API 利用标准 HTTP 方法(例如 GET、POST、PUT 和DELETE)对资源执行预定义的操作集。这些资源可以是数据、服务或任何可以数字表示的信息。

xnxqwzy的博客 643

GSEA富集分析实战:从数据准备到结果解读的完整R代码指南

本文提供了一份完整的GSEA富集分析实战指南,涵盖从R环境准备、数据质量控制到基因ID转换、参数优化和结果解读的全流程。通过详细的R代码示例和实用技巧,帮助研究人员高效完成基因集富集分析,特别针对生物信息学中常见的GSEA分析痛点提供了专业解决方案。

weixin_29246195的博客 537

构建安全的REST API:OAuth2和JWT实践

说到REST API,咱们先来搞清楚几个概念。Transfer)是一种设计风格,它定义了一套规则,用于创建网络服务。通过使用HTTP协议的方法,如GET、POST、PUT、DELETE等,RESTAPI允许应用程序或服务访问网络上的资源。举个例子,假如小黑现在要开发一个天气预报应用。这个应用需要从一个天气服务提供商那里获取数据。这时候,RESTAPI就是小黑和天气服务提供商之间的桥梁。

Karka_的博客 2343

利用 Docker Distribution 搭建私有的 Docker Registry

1、拓扑

weixin_44983653的博客 1068

STM32F4_LCD显示汉字

LCD显示汉字和显示图片、数字、字符的原理是一样的,都是将汉字、图片、数字以及字符转换点阵,进而通过函数扫描点阵在LCD上显示;

light_2025的博客 1万+

重拾后端之Spring Boot(四):使用JWT和Spring Security保护REST API

重拾后端之Spring Boot(一):REST API的搭建可以这样简单重拾后端之Spring Boot(二):MongoDb的无缝集成重拾后端之Spring Boot(三):找回熟悉的Controller,Service重拾后端之Spring Boot(四):使用 JWT 和 Spring Security 保护 REST API 通常情况下,把API直接暴露出去是风险很大的,不说别的,直接被...

weixin_34038293的博客 453

【Autosar从入门到精通到进阶实战篇】75 0x34/0x36/0x37:请求下载、传输数据、请求退出——刷写流程的“三兄弟”

文章摘要:UDS刷写流程0x34/0x36/0x37关键实现要点 本文通过一个真实ECU变砖案例,揭示了UDS刷写服务(0x34请求下载、0x36传输数据、0x37请求退出)的实现陷阱与最佳实践。核心要点: 安全架构设计: 0x34阶段只协商参数,不立即擦除Flash 采用缓冲区暂存数据,避免频繁写Flash 严格检查地址对齐和内存边界 关键改进措施: 实现数据包序列号校验(防错位) 传输层缓冲区溢出保护 0x37阶段必须包含完整性校验(如CRC32) 一次性批量写入Flash,减少擦写次数 典型错误模式:

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 71

REST API 安全设计指南

REST API 安全设计指南。REST的全称是REpresentational State Transfer,它利用传统Web特点,提出提出一个既适于客户端应用又适于服务端的应用的、统一架构,极大程度上统一及简化了网站架构设计。 目前在三种主流的Web服务实现方案中,REST模式服务相比复杂的SOAP和XML-RPC对比来讲,更加简洁,越来越多的web服务开始使用REST设计并实现。但其缺少安全特性,《REST API 安全设计指南》就是一个REST API安全设计的指南,权当抛砖引玉,推荐网站后台设计及

The magic of fingertips 2394

基于知识图谱的时空事件关联推理能力培养

随着信息技术的飞速发展,大量的时空事件数据被产生和收集,如交通流量数据、气象观测数据、社交媒体上的地理定位信息等。这些数据蕴含着丰富的知识和规律,但要从中提取有价值的信息并非易事。基于知识图谱的时空事件关联推理旨在通过构建知识图谱,将时空事件数据进行整合和关联,从而实现对事件之间潜在关系的挖掘和推理。本文的目的是系统地介绍基于知识图谱的时空事件关联推理能力的培养方法,包括核心概念、算法原理、数学模型、实际应用等方面。

操作系统内核探秘的博客 752

27、振动信号实时并行处理与风力发电机模型鲁棒控制设计

本文探讨了振动信号实时并行处理与风力发电机模型鲁棒控制设计两大核心技术。在振动信号处理方面,提出基于FPGA、RT和PC三级架构的并行采集与处理系统,实现高效、实时的振动分析,适用于电机状态监测与预测性维护。在风力发电控制方面,研究风力农场布局优化(WFLO)问题,比较九种多目标元启发式算法性能,并提出基于扰动观察法的最大功率点跟踪(MPPT)控制策略,提升发电效率与系统鲁棒性。研究成果为工业设备智能监控与可再生能源优化提供了有效技术路径。

sunny的博客 74

REST API 安全设计

REST API 安全设计 2017年04月27日 18:34:27 阅读数:1699 Rest API 的那些事儿 作者/asterisk 在软件行业快速发展的今天,传统的软件授权已经不能足以满足一个IT类的公司的发展。虽然在大部分公司里,它还是现金池的直接源头。但是在可遇见的未来,受摩尔根理论的失效、物联网的发展等影响,应用的架构...

diuju8472的博客 261

手把手教你学simulink(44.1)--串励直流电动机场景示例:基于Simulink开发一个串励直流电动机电压控制仿真模型

高启动转矩:由于励磁绕组和电枢绕组串联连接,电机在启动时可以产生较大的转矩。速度随负载变化:由于励磁电流和电枢电流是同一电流,电机的速度会随着负载的变化而显著变化。适用于重载启动:适合用于需要高启动转矩的应用,如起重机、牵引系统等。

MHD0815的博客 341

REST API 是无状态的吗,如何保障 API 的安全调用?

安全层面核心措施​通信安全​​强制使用HTTPS​​身份认证​JWT, ​OAuth 2.0​​访问授权​​RBAC,业务逻辑校验​防滥用​​限流(Rate Limiting)​​​数据安全​​输入验证,防范注入攻击​稳健性​安全的错误处理,日志监控保障REST API安全是一个“深度防御”的策略,需要将以上多种措施结合使用,形成一个完整的安全体系,而不能仅仅依赖某一种方法。

zwh1zwh的博客 761

路径跟踪 | 图解分析人工势场算法APF(附ROS C++/Python/Matlab仿真)

人工势场法的基本思想是在机器人运动环境中创建一个势场,再搜索一条势函数下降的方向,寻找一条无碰撞的最优路径。本文介绍APF算法的基本原理,并提供势场可视化实现,基于ROS C++/Python/Matlab进行算法仿真实验加深理解

FRIGIDWINTER的博客 7396

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

rest api_如何确保REST API凭据安全

rest api 如果要构建移动应用程序,则需要连接到某些REST API。 例如,如果您想将地址解析为经纬度信息以显示在地图上,则可以使用Google Geocoding API : https://maps.googleapis.com/maps/api/geocode/json?address=San Francisco,CA&key=AIzaSyDvFMYGjeR02RH ...

danpu0978的博客 130

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

如何保障 REST API 的安全性?一文掌握四大主流API认证机制

在万物互联的时代,REST API 不仅是系统之间的桥梁,更是用户数据与平台服务之间的核心通道。选择合适的安全的API认证方式,不仅能保护用户隐私、防止恶意调用,更是构建可信商业系统的第一步。无论是简单的 Basic Auth,还是企业级的 OAuth2 和 JWT,背后反映的都是“信任”的技术实现。而像 a1.art 这样通过 API Key 和 HTTPS 构建安全闭环的平台,也正在让 AI 能力以更低门槛、更高效率走进每一个开发者的创意场景。掌握API认证机制,是理解数字世界秩序的关键一课。

2501_92274820的博客 2050

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

五原则四实践,REST API安全性请谨记

云原生和微服务架构等技术的流行让API受到越来越大的重视。那么当应用程序开始上云,各项需求都可以通过云服务满足的情况下,应用程序,尤其基于云端API的应用程序的安全问题该如何解决?

AKAMAI_CHINA的博客 940

REST API安全设计指南

1、REST API 简介 REST的全称是REpresentational State Transfer,表示表述性无状态传输,无需session,所以每次请求都得带上身份认证信息。rest是基于http协议的,也是无状态的。只是一种架构方式,所以它的安全特性都需我们自己实现,没有现成的。建议所有的请求都通过https协议发送。REST ful web services 概念的核心就是“资源”...

Fly_鹏程万里 436
上一篇: Java阻塞队列的简单实现
下一篇: Spring Boot 默认的指标数据从哪来的?
SpringForAll
博客等级 码龄7年 15粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值