Part1什么是API

API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。

通过API,就算不知道如何操作,也能将产品或服务与其他产品或服务进行互通。这样就可以简化应用开发,节省时间和成本。在开发新的工具和产品或管理现有工具和产品时,强大灵活的API可以帮助简化设计、管理和使用,并带来更多创新机遇。

API有时被视为 “合同”,而 “合同” 文本则代表了各方之间的协议:如果一方以特定方式发送远程请求,该协议规定了另一方的软件将如何做出响应。

API发展简史

API概念的出现,始于计算机时代的初期,远远早于个人电脑诞生之前。当时,API常被当作操作系统的库,而且基本上都在本地系统上运行,仅偶尔用于大型机之间传递消息。将近30年后,API走出了它们的本地环境。到了21世纪初,API成为了用于实现数据远程集成的一种重要技术。

远程API和Web API的区别

远程API旨在通过通信网络进行互动。这里的”远程”是指API操控的资源不在提出请求的计算机上。由于互联网是应用最广泛的通信网络,所以大多数API都是基于Web标准来设计的。并非所有的远程API都是Web API,但可以认为Web API都是远程API。

Web API通常会使用HTTP来传输请求消息,并提供响应消息的结构定义。这些响应消息通常都会以XML或JSON文件的形式来提供。XML和JSON都是首选格式,因为它们会以易于其他应用操纵的方式来呈现数据。

REST与SOAP的区别

随着Web API的不断普及,相应的协议规范也随之产生了,从而推动了信息交换的标准化:简单对象访问协议,简称SOAP。使用SOAP设计的API会使用XML格式来收发消息,并通过HTTP或SMTP来接收请求。使用SOAP时,在不同环境中运行的应用或使用不同语言编写的应用能够更加轻松地共享信息。

相关的规范还有一个,即表述性状态传递(REST)。遵循REST架构约束的Web API 被称为RESTful API。REST与SOAP有着根本区别:SOAP是一种协议,而REST是一种架构模式。这意味着RESTful Web API没有官方标准。正如Roy Fielding在论文”Architectural Styles and the Design of Network-based Software Architectures”(架构模式以及基于网络的软件架构的设计)中定义的那样,只要API 符合RESTful系统的6个导向性约束,就算作RESTful API:

  1. 客户端/服务器架构:REST 架构由客户端、服务器和资源构成,通过HTTP来处理请求。
  2. 无状态:请求所经过的服务器上不会存储任何客户端内容。与会话状态相关的信息会存储在客户端上。
  3. 可缓存性:通过缓存,可免去客户端与服务器之间的某些交互。
  4. 分层系统:客户机与服务器之间的交互可以通过额外的层来进行调解。这些层可以提供额外的功能,如负载均衡、共享缓存或安全防护。
  5. 按需代码(可选):服务器可通过传输可执行代码来扩展客户端的功能。
  6. 统一接口:这项约束是RESTful API的设计核心,共涵盖 4 个层面:
  7. 识别请求中的资源:请求中的资源会被识别,并与返回给客户端的表示内容分离开来。
  8. 通过不同的表示内容来操纵资源:客户端会收到表示不同资源的文件。这些表示内容必须提供足够的信息,以便执行修改或删除操作。
  9. 自描述消息:返回给客户端的每个消息都包含充足的信息,用于指明客户端应该如何处理所收到的信息。
  10. 将超媒体作为应用状态的引擎:在访问某个资源后,REST客户端应该能够通过超链接来发现当前可用的所有其他操作。

虽然看似有很多约束需要遵循,但是这些约束遵循起来要比遵循规定的协议容易得多。因此,RESTful API现在变得比SOAP更为普及。

近年来,OpenAPI规范已成为定义REST API的通用标准。OpenAPI为开发人员提供了一种与语言无关的方式来构建REST API接口,从而最大程度减少不确定的因素,让用户安心工作。

面向服务的架构(SOA)和微服务架构

最常使用远程API的两种架构方案分别是:面向服务的架构(SOA)和微服务架构。在这2种方案中,SOA的历史更为久远一些。最初,它是在单体式应用的基础上经过改进而形成的。虽然单个单体式应用也可以完成各种操作,但通过某种集成模式(如企业服务总线(ESB))在不同应用间实现松散耦合后,即可获得某些功能。

从大多数层面来看,SOA都要比单体式架构更简单,但是,如果无法明确理解各种组件交互,SOA也可能会进一步加剧整个环境的复杂性。这种复杂性的加剧会重新引发 SOA 想要解决的某些问题。

对于专用松散耦合服务的使用,微服务架构与SOA模式类似。但是,微服务架构会对传统架构进行进一步细分。在微服务架构中,服务会采用通用消息传递框架,如RESTful API。它们会使用RESTful API来实现相互通信,且无需执行繁琐的数据转换处理或使用其他的集成层。使用RESTful API可以加速新功能和新更新的交付;甚至还可以说,是这类API促进了这种速度的提升。该架构中的每一个服务都呈离散状态。一个服务可以被取代、增强或丢弃,而不会影响架构中的任何其他服务。这种轻量级架构有助于优化分布式资源或云资源,而且能够支持个别服务的动态扩展。

Part2什么是API安全

API 安全防护就是保护 API(包括拥有和使用中的 API)的完整性。

Web API安全防护主要关注通过API与互联网的数据传输。

Web API安全性包括API访问控制和隐私,以及通过OWASP API Security Top 10中所述的API逆向工程和对API漏洞的利用来检测和补救对API的攻击。

因为他们通常可以通过公共网络(从任何地方访问)获得,所以API通常都有很好的文档记录或易于逆向工程。API对拒绝服务(DDOS)类型的事件也非常敏感,因此对于不良行为者来说,它们是很有吸引力的目标。

攻击包括绕过客户端应用程序,以试图破坏其他用户的应用程序功能或破坏私人信息等。API安全性专注于保护此应用程序层并解决恶意黑客直接与API交互时可能发生的情况。

REST API 安全防护与SOAP API 安全防护对比

大多数API实现属于REST(表述性状态传递)或SOAP(简单对象访问协议)。

REST API使用HTTP并且支持传输层安全性(TLS)加密。TLS是确保互联网连接私密性的一个标准,可以检查两个系统(服务器与服务器或服务器与客户端)之间发送的数据是否受到加密且未被篡改。这意味着,如果黑客试图从购物网站套取信用卡信息,他们会无法读取或修改数据。如果URL的开头是”HTTPS”(超文本传输安全协议),那么该网站就使用了TLS保护。

REST API也使用JavaScript对象表示法(JSON),这是一种能够更轻松通过Web浏览器传输数据的文件格式。通过使用HTTP和JSON,REST API不需要存储或重新打包数据,因此速度要比SOAP API快得多。

SOAP API使用称为Web服务安全性(WS 安全性)的内置协议。这类协议会定义一套采用保密和身份验证的规则集。SOAP API支持两大国际标准机构(结构化信息标准促进组织(OASIS)和万维网联盟(W3C))制定的标准,它们结合使用XML加密、XML 签名和SAML令牌来验证身份和授权。通常而言,SOAP API因具有更加全面的安全措施而受到推崇,但它们也需要更多的管理。因此,处理敏感数据的机构更推荐采用SOAP API。

带你走进API安全的知识海洋相关推荐

  1. 送福利 | 送书5本《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发

    <ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...

  2. 计算机科学与技术与cs,CSgo! | 遇见CS—带你走进传说中的计算机专业

    原标题:CSgo! | 遇见CS-带你走进传说中的计算机专业 遇见CS 带你走进传说中的计算机专业 首先恭喜各位小萌新进入华中科技大学计算机科学与技术学院,在这里大家将度过四年难忘的大学时光. 相信大 ...

  3. 【密码学】一万字带您走进密码学的世界(下)

    引文 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学:应用于破译密码以获取通信情报的,称为破译学,总称密码学. 在<一万字带您走进密 ...

  4. [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...

  5. 孩子对不起,是我们带你们走进了地狱

    "三种颜色"事件不说了.这是普通人和另一群人之间的战争,这事不能就这么过去. 在这之前,我们先来谈谈<熔炉>这部伟大而沉重的电影.故事讲述了一家听障学校,校长.教导主任 ...

  6. 图文笔记,带你走进《未来简史》(16-20)

    作者:@文曰小强(微信公众号:diaoxiazhangqiang) 整理:@一喵(作者已授权) 转载请注明出处. 知识给当代人安全感!<未来简史>笔记16 昨天提到:不断追求增长的现代契约 ...

  7. 上海财经大学浙江学院计算机应用,【招生季⑦】今晚带你走进上海财经大学浙江学院——经济与信息管理系...

    原标题:[招生季⑦]今晚带你走进上海财经大学浙江学院--经济与信息管理系 上海财经大学浙江学院经济与信息管理系现有电子商务.软件工程.经济学.健康经济与管理四个专业.依托学院在财经领域的优势,结合学院 ...

  8. 【架构师李肯】带你走进架构师的一天

    作者简介 架构师李肯(全网同名),一个专注于嵌入式IoT领域的架构师.有着近10年的嵌入式一线开发经验,深耕IoT领域多年,熟知IoT领域的业务发展,深度掌握IoT领域的相关技术栈,包括但不限于主流R ...

  9. 超详细,手把手教你一次简单的SQL注入,不用任何工具,带你走进web安全的大门

    超详细,手把手教你一次简单的SQL注入,不用任何工具,带你走进web安全的大门 靶场网站,网站所有权在二向箔安全学院 知识盒子 简单的SQL注入题目,可以用来入门练习,体验一下实训 老套的题目:提取网 ...

最新文章

  1. SQL游标的使用与语法
  2. 49字母异位词分组(哈希表)
  3. 【AI不惑境】模型剪枝技术原理及其发展现状和展望
  4. 【NLP】授人以渔:分享我的文本分类经验总结
  5. Windows集群网络配置最佳做法
  6. linux sftp密码错误,linux个别用户sftp坏掉,验证密码后卡住, 大概是什么问题?...
  7. Shell字符串比较(等于、不等于、大于、小于、起始字符、结尾字符)
  8. 南京的学员看过来 | NVIDIA DLI深度学习入门培训
  9. 蓝桥杯 ADV-21 算法提高 多项式输出
  10. ❤️Bean的自动装配(详细)
  11. 经验分享 | 我是如何从小白到收获几个不错的offer!
  12. 阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
  13. JavaScript设计模式----装饰者模式
  14. 2022达摩院青橙奖公布:15位青年学者多半从事基础研究,4位女科学家获奖破纪录...
  15. ClickHouse S3 外表调研
  16. Win11怎么添加日语输入法
  17. 【大咖有约】猎聘网单艺:人才大数据驱动的人力资源革新
  18. Kettle组件 计算器全解析
  19. 使用POI读取EXCEL模板并填充数据,上传至腾讯云储存桶
  20. Matlab直方图显示y值

热门文章

  1. 854计算机专业基础,东华大学2019年考研854计算机及软件工程专业基础综合考试大纲...
  2. 变分法求解最优控制问题推导思路
  3. 微信大会有哪些看点?
  4. 脱机运行scp linux,解决CentOS使用不了scp命令
  5. 文章同步多平台操作教程!
  6. Maven filter 导致打包以后的excel文件损坏的问题
  7. 什么是实人认证?需要用到哪些api接口
  8. win api 路径操作函数
  9. 实现登陆功能——用户登录设计
  10. JavaScript实现在线websocket WSS测试工具 -toolfk程序员工具网