Logo
Section 1 / 9

简介:为什么我们需要保护REST API

理解Web服务的发展历程以及对增强安全措施的需求。

导入

简介:为什么我们需要保护REST API

理解Web服务的发展历程以及对增强安全措施的需求。

REST

表述性状态转移(Representational State Transfer,简称REST) 是由罗伊·菲尔丁(Roy Fielding)在其博士论文《基于网络软件架构的架构风格》中首次提出的架构风格。它本身并不是一种协议,而是依赖于某种协议进行通信——通常使用的是 HTTP 协议。因此,我们需要了解如何更好地保护 REST API。

REST 的通信协议

在计算机科学中,协议是指用于在电子设备之间传输数据的一组规则或流程。REST API 通常使用 超文本传输协议(HTTP)。

历史

随着互联网的发展,不同技术、运行在不同服务器上的设备和应用程序之间通信的需求日益增长。这促使人们需要对通信过程进行标准化,并定义统一的通信协议。

Web 服务应运而生,为跨不同设备和服务器的系统提供了更高效的通信方式——无论底层使用何种技术。

服务端渲染 vs 客户端渲染

服务端渲染

早期,服务器直接生成 HTML 并发送给客户端,客户端接收后直接用于页面渲染。

...
服务端渲染

客户端渲染

随着 Web 服务的发展,服务器仅返回原始数据,由客户端负责构建 HTML 并完成渲染。

...
客户端渲染

在众多为 Web 服务设计的协议中,简单对象访问协议(SOAP) 和 REST 经受住了时间的考验。尽管关于使用 SOAP 还是 REST 的争论持续不断,但 REST 能够直接利用底层的 HTTP 协议并在此基础上扩展,使其在某些场景下更具优势。

SOAP 通常使用可扩展标记语言(XML),其数据格式相对冗余;相比之下,JavaScript 对象表示法(JSON)的数据结构更加轻量。这种轻量化特性有助于节省网络带宽,也推动了 REST 的广泛应用。当然,REST 支持多种数据格式,不仅限于 JSON。

随着 REST 的广泛使用,针对 REST API 的安全攻击也随之增加。因此,我们必须重视并加强其安全性。

REST 的架构约束

任何 REST API 都必须遵循特定的架构约束。在设计 REST API 时,必须满足以下约束条件:

  • 具有统一接口
  • 无状态
  • 可缓存
  • 客户端-服务器架构
  • 分层系统
  • 按需代码(可选)

在设计和实现阶段,安全问题贯穿于所有这些架构约束之中。

注意: REST API 适用于建模系统与数据,但在某些特定场景下可能存在更优的替代方案,例如实时流数据处理。像 gRPC、JSON-RPC 和 GraphQL 等新型通信机制正在兴起。不过,本课程中提到的概念通常也适用于非 REST 类型的 API。

REST API 安全的细节要点

如果在调用 REST API 之前已存在认证层,则默认认为该 API 是安全的。虽然身份验证和授权在保护 REST API 中至关重要,但仍需部署其他多项安全措施。本课程将介绍提升 REST API 安全性的具体方法。

什么是 CVSS?

通用漏洞评分系统(Common Vulnerability Scoring System,简称CVSS) 是一个免费且开放的行业标准,用于评估计算机系统安全漏洞的严重程度。该系统的评分范围为 0 到 10,其中 10 表示最严重的漏洞。

评分依据多个因素综合判断。例如,若系统可在无需用户任何操作的情况下被利用,则属于严重漏洞;若攻击者需要用户参与才能实施攻击,这也被视为高危漏洞。

使用 HTTPS 的 REST API