科普 | API安全性的基础知识
千家网本文是一系列文章的第一篇,介绍和解释了软件编程,操作和保护参与者的应用程序编程接口(API)安全威胁,挑战和解决方案。
API安全基础
研究各种API安全性替代方案可能会引起混淆,即使是经验丰富的专家也是如此。本系列文章旨在帮助所有类型的读者更好地了解保护API免受网络安全风险的各种现代方法的利弊。该材料旨在帮助企业安全和软件开发团队开发和维护一致的保护理念。
目标读者包括每天依赖和使用API的软件开发人员以及可能对组织中的API安全负责的技术经理。但是,目标读者还包括技术人员,他们几乎没有使用API的经验,但是仍然对该重要问题的安全性感兴趣。我们尝试以每种类型的阅读器都可以访问的方式描述API安全性概念。
API简介
网络和Internet服务的典型用户倾向于根据屏幕、键盘、监视器等来考虑计算机接口。这些接口是系统与人类用户交换信息的可见手段,并且近年来它们发展迅速。例如,苹果公司的触摸屏才出现在十年前,而一代年轻人几乎不记得这种有用功能存在之前的世界是什么样。
但是计算中还存在另一种类型的界面,对于日常用户而言可能更隐藏。界面的另一种类型是软件程序之间如何通信。多年以来,这个过程一直没有得到很好的说明,因为程序员发明了所谓的进程间通信(IPC)协议。贝尔实验室的早期操作系统Unix,现在作为Apple iOS和Android的基础,使IPC设计更加容易,但它们是非标准的。
到2000年,业界决定将这些软件到软件的接口变得更加开放和标准。这样的技术决定成为我们现在称为应用程序编程接口或更常见的API的起源。认识到API提供了一个标准接口,通过该接口两个软件程序(通常也称为进程)可以进行通信,共享消息或托管共享内存。
更具体地说,API是使软件服务可用于工作负载或应用程序以进行双向通信和消息共享的接口。 API也通常用于在不同进程之间共享内存。 API本质上是无状态的,并且通常包含完成交易所需的所有信息,这与Web表单不同,Web表单可能需要多个交易来进行用户注册等过程。
API安全基础
图1.通用API模型
Unix操作系统IPC
大约半个世纪前,贝尔实验室的研究人员肯·汤姆森(Ken Thomson)和丹尼斯·里奇(Dennis Ritchie)发起了一个项目,目的是构建一种在AT&T内部使用的多任务操作系统。尽管起初目标相对温和,但从那时起,他们生产的所谓的Unix软件和相关的设计理念一直是几乎所有成功的商业操作系统的技术基础。 Linux和Android是直接派生产品,而iOS和Windows则受到Unix的巨大影响。
对于Unix操作系统,一个重要的设计考虑因素是需要创建IPC机制,该机制允许在计算机程序之间进行数据共享和消息传递。汤普森和里奇受到当时计算机科学界正在设计的许多快速发展的技术概念的影响。这包括生产者-消费者模型的出现以及分布式计算的新方法。
可以将Unix IPC方法视为解决API现在所涵盖的许多问题的早期尝试。两者都涉及模块化,标准化和简化在协作过程之间共享数据或消息的方式的需求。显然,最大的不同是现代API受益于Internet带来的大规模规模。最初的Unix工作是本地的和操作系统特定的。