前言
API 有很多分类,本文要讲述的甚至整个行业里面探讨的 API 安全 ,其实指的都是 Web 应用的 API,也就是前后端分离后的数据交互接口或者应用与第三方的数据交互接口。API 是现代 Web 编程主要的数据交互方式,API 安全已成绝大多数企业的严重问题,只有极少企业完全有能力解决 API 安全性问题。随着越来越多的企业通过 api 访问数据和服务,这些 API 成为数据盗窃和软件攻击的诱人目标!API 正在成为大多数现代应用程序的支柱,因此它们的安全性是现代信息安全的核心。保障 API 的安全性已成为当下 WEB 编程的首要目标。
对于企业而言,在生产经营中应提高数据安全意识,通过技术手段加强安全防范,定期修补安全漏洞,加强安全管理。对于公民个人而言,应当警惕个人信息数据泄露,同时自觉履行数据安全保护义务,不得窃取或以其他非法方式获取、使用数据,否则将触及法律红线。
什么是 API
API一般指应用程序编程接口。 API主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。是一种为客户提供服务的方式。
几种主流 API 架构
各种针对交互的 api,本质上相当于是应用层的一个前后端数据交互的协议
REST API
REST 是一种风格
REST 的作用是将我们查询(view),创建(create),编辑(edit)和删除(delete)直接映射到 HTTP 中已实现的GET,POST,PUT 和 DELETE方法
比如定义一个有关书的接口:demo.com/books ,然后使用不同的 http 方法来定义行为。GET 查询,POST 创建,PUT 编辑,DELETE 删除。这样改动之后 API 变得统一了,我们只需要改变请求方式就可以完成相关的操作,这样大大简化了我们接口的理解难度,变得易于调用。这就是 REST 风格的意义!
json 由于其轻量、易读的优点已经发展成了一种最常用的数据请求和响应格式。
GraphQL
一种用于 API 的查询语言
RPC
调用另一个系统的函数
SOAP
是一个 XML 格式的、高度标准化的网络通讯协议
API 安全
本文以 HTTP 接口为例讲解 API 安全
API 安全的目标
- 机密性:确保信息只被预期的读者访问
- 完整性:防止未授权的创建,修改和删除
- 可用性:当合法用户需要访问 API 时,API 总是可用的
- 可追溯:谁什么时间做了什么全都是要记录日志
API 安全计划的最终目标:零信任
常见的 API 风险
1.安全风险:包括跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、SQL 注入等欺诈行为 2.性能风险:API 接口的性能可能受到访问量的影响,如果访问量过大,可能导致 API 接口响应变慢或者崩溃。甚至大流量本身就是由 DDOS 拒绝服务攻击引起的 3.数据风险:数据删除、数据丢失、数据损坏、数据篡改、意外修改、数据泄露 4.业务风险:越权,抵赖(否认做过的行为)
安全机制
针对各种常见风险,都有对应的安全机制,认证机制、授权机制、加密机制、日志机制、流量控制机制
认证机制
API 认证机制是保护 API 的首要方式,其目的是确定 API 请求的来源和合法性。常见的认证机制包括基于令牌(Token)的认证、OAuth 认证等。
授权机制:访问控制
访问控制机制是限制 API 访问权限的一种方式,它可以确保 API 的数据仅被授权的用户或应用程序访问。常见的访问控制机制包括角色基础的访问控制(RBAC)、属性基础的访问控制(ABAC)等。
加密机制
加密机制是保护 API 数据传输和存储安全的一种方式,它可以保护 API 数据在传输过程中不被窃取或篡改。常见的加密机制包括 HTTPS 协议、TLS 协议等。
监控与日志机制
监控与日志机制是检测和记录 API 操作的一种方式,它可以帮助开发者发现和解决 API 存在的安全漏洞或攻击行为。常见的监控与日志机制包括 API 网关、日志分析工具等。
流量控制机制
API 在面临大量合法或非合法请求时可能会耗尽 API 资源和带宽,从而使 API 系统瘫痪或无法正常工作。采用有效的 API 限流和防御机制,保证合法访问的可用性和避免非法的访问。
结合上面的图,我们可以更好的理解安全机制,最右面的是我们提供的 API,最左边是用户,在这之间就需要我们加入安全机制。
- 首先加密是贯穿在整个安全机制流程中的;
- 然后是流控,可以把一些不必要的请求拦截掉,不用走后面的流程;
- 接下来是认证,来确保用户的身份;
- 然后是日志,将用户做了什么记录下来;
- 最后是授权,来决定请求是否可以被执行。
这些安全机制可以有效地保护 API 的安全,确保 API 的数据和功能不受到未经授权的访问和攻击。