API基础知识-学习手册小结

一、API基础知识

API(应用程序编程接口)是一组定义了软件组件之间交互的规则和协议。它允许不同的软件系统之间进行通信和交互,使得开发者可以利用现有的软件组件来构建新的应用程序。

1、涉及方面

  • 概念理解:了解什么是API、API的作用和优势,以及API与其他相关概念(如SDK、Web服务等)的区别与联系。
  • API类型:了解不同类型的API,包括Web API、库API、操作系统API等。了解它们的特点、用途和使用方式。
  • API协议:熟悉常用的API协议,如HTTP、REST、SOAP等。了解这些协议的工作原理、请求与响应格式、常用的HTTP方法(GET、POST、PUT、DELETE等)等。
  • API设计:了解API设计的原则和最佳实践,包括良好的命名规范、易于理解和使用的接口设计、版本管理等。
  • 身份认证和授权:了解API身份认证和授权的方式,如基于令牌的身份验证、OAuth等。
  • 错误处理:了解API错误处理的机制和标准,包括错误码、错误消息的格式等。
  • API文档和测试:熟悉编写和使用API文档,了解如何进行API测试和调试。
  • 安全性:了解API安全性的考虑因素,包括数据加密、访问控制、防止恶意请求等。
  • API管理和监控:了解API管理平台和API监控工具的使用,包括API注册、订阅、限流、性能监控等。
  • 最佳实践:了解API开发中的最佳实践,如版本管理、性能优化、缓存策略等。
  • 数据格式;

2、API按使用范围分类

  • 内部API
  • 企业定制API
  • 外部API

3、API设计思想/风格

  • 远程过程调用 RPC
  • 表征状态转移 REST
    • 级别0:定义一个 URI,所有操作是对此 URI 发出的 POST 请求
    • 级别1:为各个资源单独创建 URI
    • 级别2:使用 HTTP 方法来定义对资源执行的操作
    • 级别3:使用超媒体(HATEOAS)
  • GraphQL
    • 描述了如何精确的数据请求
  • 各风格区别
    • RPC面向过程
    • Rest面向资源
    • GraphQL面向查询
  • 每种风格都有优缺点,需要根据需求来选择

4、API标准化协议/具体实现

  • RPC
    • XML-RPC
    • JSON-RPC
    • 二进制数据格式-RPC
      • gRPC
        • Protocol Buffer
      • Thrift
        • TbinaryProtocol
  • SOAP
  • REST
    • Restful
  • oData

5、API Gateway

  • 负责将服务以API的形式暴露(给系统外部),以实现业务功能
  • 部署在系统的边缘:一方面暴露在系统之外,对外提供API供外部系统访问;一方面部署在系统内部,以访问内部的各种服务。

API Gateway(API 网关)是一种中间层服务器,用于管理和提供对后端服务的访问。它充当了前端客户端和后端服务之间的代理,为客户端应用程序提供了一个统一的入口点,并处理了与多个后端服务进行通信的细节。
特点如下:

  • 统一入口:API Gateway 提供了一个统一的入口点,客户端只需与 API Gateway 进行通信,无需直接访问后端服务。这样可简化客户端代码,减少耦合性。
  • 路由和转发:API Gateway 可根据请求的路径、参数或标识符将请求路由到相应的后端服务。它可以根据不同的业务需求进行灵活的路由配置,从而实现请求的转发和分发。
  • 协议转换:API Gateway 可以支持多种协议,例如 HTTP、WebSocket、MQTT 等,并在前后端之间进行协议转换,使得客户端和后端服务可以使用不同的协议进行通信。
  • 安全认证和授权:API Gateway 提供了安全认证和授权机制,可以验证客户端的身份并授予相应的权限。它可以集成各种身份验证方式,如基于令牌的身份验证、OAuth、JWT 等,以确保只有授权的客户端可以访问后端服务。
  • 请求转换和数据格式化:API Gateway 可以对请求进行处理,包括请求的改写、参数的过滤和转换、请求的合并等。它还可以对响应进行处理,将后端服务返回的数据进行格式化、裁剪或聚合,以满足客户端的需求。
  • 缓存和性能优化:API Gateway 可以缓存常用的请求和响应,减少对后端服务的访问。它还可以实现一些性能优化技术,如请求的合并、压缩、负载均衡等,提高系统的性能和吞吐量。
  • 监控和分析:API Gateway 提供了监控和分析功能,可以收集和统计请求和响应的数据,如请求频率、响应时间、错误率等。这些数据可以帮助开发者监控系统健康状况,进行故障排查和性能调优。

6、应用程序调用API 的方式

  • 直接调用API
  • 通过SDK间接调用

RESTful API这是一种基于HTTP协议的API调用方式,通常使用HTTP协议的POST、GET、DELETE、PUT等方法进行调用。使用RESTful API的优点是简单易懂、易于扩展和利于缓存。常见的RESTful API有Twitter API、Facebook API等。
RPC(Remote Procedure Call)是一种远程调用服务的协议,它有许多不同的实现方式,例如XML-RPC、JSON-RPC、gRPC等。RPC API提供了一种更加灵活、面向过程的方式来访问服务。
SOAP(Simple Object Access Protocol)是基于XML的Web服务协议,它提供了一种分布式的、基于封装的方法调用方式。使用SOAP API的优点是可扩展性强,使用起来简单。
GraphQL API是一种建立在RESTful API或RPC API之上的API调用方式,它使用了一种声明性的查询语言。GraphQL API具有很好的可控性和高效性,可以对查询的结果进行精确的控制,从而提高了性能和效率。

接口请求的六种常见方式:

  • 1、Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
  • 2、Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
  • 3、Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
  • 4、Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)
  • 5、Delete 请求服务器删除request-URL所标示的资源(请求服务器删除页面)
  • 6、opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送测试服务器功能(允许客户端查看服务器性能)

7、API 相关软件生态

API 相关软件生态是指与API开发、管理和使用相关的软件工具、框架和平台的集合。这些软件生态系统提供了丰富的资源和工具,帮助开发者更高效地构建、发布和管理API。

  • 自动化
    • Swagger

常见的API相关软件生态组件:

  • API开发框架:包括各种编程语言和平台上的API开发框架,如Express.js、Django REST framework、Spring Boot等。这些框架提供了API开发所需的基础设施和工具。

  • API网关和管理平台:提供API网关和管理功能的软件平台,如Kong、Apigee、Amazon API Gateway等。它们可以帮助开发者对API进行路由、认证、授权、限流等管理操作,并提供API文档、监控和分析功能。

  • API文档工具:用于生成和管理API文档的工具,如Swagger、OpenAPI、Postman等。这些工具允许开发者通过注释或配置文件描述API接口,自动生成可交互的API文档。

  • API测试工具:用于对API进行测试和调试的工具,如Postman、SoapUI、JMeter等。它们可以发送请求到API端点,验证响应的正确性和性能。

  • API模拟工具:用于模拟后端服务或第三方API的工具,如WireMock、JSON Server等。这些工具可以帮助开发者在开发和测试阶段独立地进行API开发和集成。

  • API监控和分析工具:用于监控和分析API性能和使用情况的工具,如New Relic、Datadog、ELK Stack等。它们可以收集和分析API请求和响应的数据,提供实时的性能指标和错误报告。

  • API安全工具:用于保护API安全的工具,如OAuth、JWT、API密钥管理工具等。它们提供了身份验证、授权、加密和令牌管理等功能,确保API的安全性和合规性。

  • API市场和门户:提供公开和私有API发布和消费的平台,如RapidAPI、IBM API Connect等。它们为开发者提供了发现、购买和使用API的渠道。

8、参考资料

  • 思维导图:https://dsopas.github.io/MindAPI/play/
  • https://www.servicemesher.com/blog/service-mesh-and-api-gateway/
  • https://www.infoq.cn/article/ov7prhrtinw6jjhelmh6
  • https://zhuanlan.zhihu.com/p/56955812

二、API 安全

1、API 接口安全级别

  • A2类接口
    • 涉及资金交易与个人信息、账户信息的查询、删除、变更的相关的接口,这类接口应实施高等级的安全保护;
  • A1类接口
    • 涉及相关产品介绍和服务信息查询类接口,这类接口不涉及资金交易和个人信息、账户信息,可采取通用等级的安全保护

2、接口安全设计

  • 认证和鉴权
  • 加密和签名
  • 常规漏洞防护
  • 数据合法性校验
  • 限流

3、API 攻击面

  • 传统Web安全问题
  • 基础通信协议
    • Rest Api基于HTTP协议,缺少TLS
    • 其他协议标准
      • gRPC
      • Dubbo
      • GraphQL
  • 权限/访问控制相关
    • Broken Object Level Authorization
    • Broken User Authentication
    • Broken Function Level Authorization
  • 敏感数据泄露
    • Excessive Data Exposure
    • Improper Assets Management
  • 资源滥用
    • Lack of Resources & Rate Limiting
    • 拒接服务
  • 配置错误
    • Security Misconfiguration
  • 注入
  • 参数篡改
  • 中间人攻击 MITM
  • 监控
    • Insufficient Logging & Monitoring

4、加强安全性的方法

  • 令牌
  • 加密和签名
  • 扫描漏洞
  • 配额和限流
  • API网关
  • 敏感信息哈希

5、身份认证

  • Api KEY
  • HTTP Basic
  • Oauth
  • Token
    • JWT

6、授权

  • 垂直
  • 水平

7、安全规范

  • OpenApi规范

8、API 安全相关产品/工具

  • API 管理
  • API 认证管理
  • Web应用防火墙
  • 流量监控
  • DDos防御

9、现有厂商对于API 安全的防护方式

  • AWS
  • 谷歌
  • 阿里云
  • 腾讯云

常见的API安全防护方式:

  • 身份认证和授权:API厂商提供了各种身份认证和授权机制,如基于令牌的身份验证(Token-based Authentication)、OAuth、JWT等。这些机制可以验证客户端的身份,并授予合适的权限来访问API。

  • API密钥管理:API厂商通常要求开发者使用API密钥进行请求的身份验证。API密钥充当了开发者与API之间的凭证,可用于跟踪和管理请求的来源和配额限制。

  • 防止恶意攻击:API厂商会采取一系列措施来防止恶意攻击,例如实施DoS/DDoS防护、IP封禁、请求限流等。这些措施旨在确保API的可用性和稳定性。

  • 数据加密:API厂商通过使用SSL/TLS协议对API请求和响应的数据进行加密,确保数据在传输过程中的安全性。

  • 输入验证和过滤:API厂商会对接收到的请求参数进行严格的输入验证和过滤,避免常见的安全漏洞,如SQL注入、跨站点脚本攻击(XSS)等。

  • 访问控制和权限管理:API厂商提供了细粒度的访问控制和权限管理机制,确保只有授权的用户或应用程序可以访问特定的API端点和功能。

  • 日志记录和审计:API厂商会记录和审计API的请求和响应,并保存相关的日志信息。这些日志信息对于问题排查、安全审计和合规要求都非常重要。

  • 漏洞扫描和安全评估:API厂商会进行定期的漏洞扫描和安全评估,以发现和修复潜在的安全漏洞和风险。

  • 安全培训和文档:API厂商提供相应的安全培训和文档,帮助开发者了解和遵循最佳的安全实践,确保他们正确地使用和集成API。

10、API 安全防护产品

  • Web应用程序防火墙(WAF):WAF可以监视和过滤API的流量,识别和阻止恶意请求、攻击和异常行为,如SQL注入、XSS、DDoS等。

  • API网关:API网关提供了对API流量的集中管理和控制,包括身份认证、访问控制、数据转换和协议转换等功能,可以增加对API的安全性和可用性的保护。

  • API安全网关:API安全网关结合了API网关和安全防护功能,可以提供更细粒度的API访问控制、身份认证和鉴权、敏感数据保护等功能。

  • 数据加密和令牌化:使用数据加密和令牌化技术,可以保护API的请求和响应数据的机密性,防止数据泄露和窃取。

  • 恶意行为检测和预防系统:这些系统使用机器学习和行为分析等技术,来检测和预防恶意行为,如机器人攻击、API滥用等,从而提高对API的安全性。

  • API审计和监控工具:这些工具可以记录和监控API的请求和响应,包括访问日志、报警系统、异常检测等,帮助及时发现和应对潜在的安全问题。

  • 漏洞扫描工具:漏洞扫描工具可用于自动扫描和发现API中的潜在安全漏洞和弱点,并提供修复建议,从而加强对API的安全保护。

  • 安全代码审查和静态分析工具:这些工具用于对API代码进行审查和分析,识别和纠正可能导致安全漏洞的代码问题,提高API的安全性和可靠性。

11、API 安全未来发展方向

12、参考资料

  • https://application.security/free-application-security-training/owasp-top-10-api-broken-user-authentication
  • REST API 安全设计指南:http://blog.nsfocus.net/rest-api-design-safety/
  • REST API 面临的 7 大安全威胁:https://www.infoq.cn/article/caq6kibpaquigfoku0up
  • 应用程序接口(API)数据安全研究报告(2020 年):http://www.caict.ac.cn/kxyj/qwfb/ztbg/202007/P020200727599918681913.pdf

三、API 安全测试

1、测试工具

  • 主动扫描
    • Ffuf
  • 被动扫描

API安全测试方法和技术:

  • 鉴权和授权测试:测试API的身份认证和授权机制是否正确实现,是否能有效地验证用户身份和授予合适的权限。

  • 输入验证和过滤测试:测试API是否对输入数据进行了合适的验证和过滤,以防止常见的安全漏洞,如SQL注入、跨站点脚本攻击(XSS)等。

  • 敏感信息泄露测试:测试API对敏感信息的处理和保护是否符合安全要求,防止敏感数据泄露、日志过度记录等问题。

  • 访问控制和权限管理测试:测试API的访问控制机制是否有效,是否正确限制了用户和应用程序的权限,并且禁止未经授权的操作。

  • 漏洞扫描和安全评估:使用漏洞扫描工具对API进行扫描,发现可能存在的安全漏洞和风险,并进行相应的安全评估和修复。

  • DoS/DDoS测试:测试API的抗拒绝服务(Denial of Service,DoS)和分布式拒绝服务(Distributed Denial of Service,DDoS)能力,确保API能够正常运行并抵御恶意攻击。

  • 加密和数据保护测试:测试API是否使用适当的加密算法和方法来保护数据传输和存储的安全性,防止数据泄露和篡改。

  • 异常处理和错误消息测试:测试API在处理异常情况和错误消息时的行为,防止敏感信息被暴露或提供攻击者有利的信息。

  • 安全日志和监控测试:测试API是否正确记录和监控安全事件,确保及时发现和应对潜在的安全问题。

四、SOAP

  • 高度安全的数据传输。SOAP 严格的消息结构,安全性和授权功能使其成为在 API 和客户端之间执行正式软件协议的最合适的选择,同时又符合 API 提供者与 API 使用者之间的法律合同。这就是为什么金融组织和其他企业用户选择适用 SOAP 的原因。
  • SOAP(Simple Object Access Protocol)是一种基于XML的通信协议,用于在网络上进行应用程序间的通信。它定义了一组规范和标准,使得不同平台、不同编程语言的应用程序可以通过网络进行相互通信和交互。

以下是一些关于SOAP协议的主要特点和概念:

  • XML格式:SOAP使用XML格式来封装和传输数据,这使得它具有平台无关性和语言无关性。XML提供了一种可扩展的和自描述的数据格式,适合用于表示复杂的数据结构和对象。

  • 消息交换模式:SOAP是一种基于消息的通信模式,即通过发送和接收消息来实现应用程序之间的通信。每个SOAP消息由一个包含操作和参数的XML元素组成。

  • 协议中立性:SOAP协议可以在不同的网络协议上运行,如HTTP、SMTP、FTP等。通常情况下,SOAP被包装在HTTP协议中进行传输,因为HTTP在大多数网络环境下都是可用的。

  • Web服务支持:SOAP被广泛用于构建Web服务,通过将业务逻辑封装为可调用的方法,提供对远程服务的访问和调用。SOAP消息可以在Web服务之间进行传递,以实现应用程序的集成和协作。

  • 安全性支持:SOAP协议本身并不提供安全性,但可以与其他安全机制(如SSL/TLS)结合使用,以保护SOAP消息的机密性和完整性。

五、gRPC

1、基础知识

  • Protocol Buffers
    • 语言无关

2、工具链

除了这些工具,gRPC还提供了一些用于跟踪和调试的支持库和插件,如grpc-debug、grpc-health-probe等。

  • gRPC是一个高性能、开源的远程过程调用(RPC)框架,用于构建分布式应用程序。它使用Protocol Buffers作为接口定义语言(IDL),并支持多种编程语言。

    gRPC工具链包括一组工具,用于帮助开发者使用和管理gRPC服务和相关资源。下面是gRPC工具链中的一些重要工具:

  • protoc:protoc是gRPC的核心工具,用于将.proto文件编译成各种编程语言的源代码。通过定义接口和消息类型,protoc生成对应的客户端和服务端代码,使得开发者可以方便地使用gRPC进行远程调用。

  • protoc-gen-grpc:这是一个插件,用于在生成的代码中添加gRPC特定的类和方法,以支持基于gRPC的通信和服务调用。

  • grpc_cli:grpc_cli是一个命令行工具,用于与gRPC服务进行交互。它可以发送请求、调用服务方法,并显示响应结果。

  • grpcurl:grpcurl是另一个命令行工具,用于与gRPC服务进行交互和测试。它可以发送请求、显示服务的元数据,并支持自定义请求头和认证。

  • grpcwebproxy:grpcwebproxy是一个反向代理服务器,用于将gRPC请求转换为HTTP/1.1请求,以便在不支持原生gRPC的浏览器中访问gRPC服务。它可以作为一个独立的服务器运行,或者与现有的HTTP服务器集成。

3、调用流程

 

4、开发流程

  • 编写.proto文件,生成指定语言源代码
  • 编写服务端代码
  • 编写客户端代码

5、参考资料

  • https://www.liwenzhou.com/posts/Go/gRPC/

六、oData

  • 一种Restful风格Api的标准化协议
  • OData(Open Data Protocol)是一种基于Web标准的开放协议,用于创建和使用RESTful风格的数据服务。它通过HTTP协议提供了一种统一的方式来对数据进行查询、操作和导航,使得不同平台和技术栈的应用程序可以方便地访问和共享数据。

下面是关于OData的一些重要概念和特点:

  • RESTful架构:OData遵循RESTful架构原则,将数据和操作封装为资源,并通过HTTP方法(如GET、POST、PUT、DELETE)进行访问和操作。每个资源都有一个唯一的URL地址,可以通过URL进行检索、筛选、排序等操作。

  • 数据模型:OData使用实体模型来描述和表示数据资源。实体模型使用元数据(Metadata)来定义实体类型、属性和关系。元数据可以通过特定的URL获得,包含对数据模型的描述信息和结构。

  • 查询语言:OData提供了一种类似SQL的查询语言,称为OData查询语言(OData Query Language)。它支持丰富的查询操作,如过滤(Filter)、排序(Order by)、分页(Skip、Top)、计数(Count)、扩展(Expand)等。

  • 统一接口:OData定义了一组统一的HTTP方法和URL约定,用于执行CRUD操作(创建、读取、更新、删除)。例如,使用GET方法访问实体集合的URL可以获取实体集合的内容,使用POST方法可以向实体集合添加新的实体。

  • 可扩展性:OData允许开发者自定义和扩展数据服务的行为和功能。通过自定义查询方法、操作方法和函数,可以增加特定领域的业务逻辑和数据处理能力。

  • 格式支持:OData支持多种数据格式,如JSON(默认)、XML和Atom。开发者可以根据需要选择合适的数据格式进行数据的传输和交换。

1、包含部分

  • 模型
    • 定义数据结构
  • 协议
    • CRUDQ
    • 数据传输格式
  • 客户端库
  • 服务
    • 服务文档
    • 服务元文档

2、参考资料

  • https://my.oschina.net/u/4273197/blog/4308716

七、GraphQL

1、基本概念

  • 什么是GraphQL
    • API查询语言

2、属性

  • 操作类型
    • 查询
    • 变更 mutation
    • 订阅 subscription
  • 类型 Type
    • 对象 Object
    • 标量 Scalar
  • 模式 schema
    • 描述数据逻辑
    • 对象合集
    • 查询入口
  • 解析 Resolver
    • 描述接口中每个Query的解析逻辑

3、特性

  • 准确获取数据
  • 只有一个对外接口,单路由
  • 清晰的辅助性错误信息
  • API演进无需划分版本(为了方便,可能会造成问题)
    • 后段增加字段前端无感
  • 对比Restful
    • 没有过多依赖HTTP协议
    • 自己有一套解析引擎
  • 内省
    • __schema 查询所有对象
    • __type 查询指定对象的所有字段
    • 内置接口文档
  • 废弃

4、执行流程

  • 查询
  • 解析
  • 验证
  • 执行

5、攻击面及防御方式

  • 信息泄露
    • 错误配置导致内省可被外部访问
    • 废弃字段利用
      • 指定includeDeprecated参数为true,__type仍然可以将废弃字段暴露出来
  • 身份认证和权限控制不当
    • 越权
    • 防御
      • 业务层做权限控制
      • 中间加权限校验层
  • 嵌套查询拒绝服务
    • 防御
      • 限制嵌套深度
  • 前端安全
    • CSRF
      • 修改
    • Clickjacking
  • 注入
    • sql注入
    • 命令执行
    • XSS
    • 防御
      • 参数化查询
  • DEBUG模式
    • 信息泄露
  • 只是个接口,依旧会有传统的安全问题

6、认证方式

  • RESTful开放认证接口
    • 后续GraphQL查询时带上token
  • GraphQL认证
    • Resolver中添加认证逻辑

7、权限控制

  • 在业务层实现权限控制
  • 在GraphQL中实现权限控制
    • Resolver中实现

8、软件生态

实现

GraphQL软件生态系统提供了各种工具和库,用于开发、测试和管理GraphQL API。从服务器端框架到客户端库,从数据库集成到开发者工具,开发者可以根据需要选择合适的工具来构建和维护GraphQL API。这些工具和库共同促进了GraphQL的普及和广泛应用。

  • GraphQL是一种用于API开发的查询语言和运行时。它为客户端提供了一种灵活、高效且类型安全的方式来获取所需的数据。GraphQL有一个丰富的软件生态系统,提供了各种工具和库,用于开发、测试和管理GraphQL API。

    下面是GraphQL软件生态中的一些重要组成部分:

  • GraphQL服务器端框架:有很多流行的GraphQL服务器端框架可供选择,如Apollo Server、Graphene、Nexus等。这些框架提供了构建和运行GraphQL API所需的核心功能,包括解析请求、执行查询、类型验证等。

  • 客户端库和框架:为了便捷地使用GraphQL API,开发者可以使用一些客户端库和框架,如Apollo Client、Relay、urql等。这些工具提供了在各种平台(Web、移动等)上与GraphQL API进行交互的功能,包括查询构建、缓存管理、数据预取等。

  • 数据库集成:GraphQL需要与后端数据库进行集成,以实现数据的持久化和查询。一些常见的数据库集成库包括Prisma、PostGraphile、Hasura等。它们提供了将数据库模型映射到GraphQL模式的功能,并自动生成相应的查询和变更操作。

  • 开发者工具:GraphQL提供了一些开发者工具,用于调试、分析和测试GraphQL API。例如,GraphQL Playground是一个流行的可视化IDE,用于在浏览器中与GraphQL API进行交互和调试。还有其他工具如GraphiQL、Altair等。

  • 扩展和插件:GraphQL提供了一种扩展机制,允许开发者根据需要添加自定义指令、类型和操作。一些插件和扩展库,如GraphQL Shield、GraphQL Modules等,为开发者提供了更高级的功能,如权限控制、模块化组织等。

  • 托管服务:对于小型项目或快速原型,可以使用托管服务来部署和管理GraphQL API。一些托管服务提供商,如Apollo Graph Manager、AWS AppSync等,简化了API的部署、监控和性能优化。

工具
  • GraphiQL
  • ChromeiQL 插件

9、参考资料

  • 官方文档:https://graphql.cn/learn/
  • GraphQL 入门看这篇就够了:https://chinese.freecodecamp.org/news/a-detailed-guide-to-graphql/
  • GraphQL安全指北:https://www.freebuf.com/articles/web/184040.html
    • 比较详细
  • 玩转graphQL:https://mp.weixin.qq.com/s/gp2jGrLPllsh5xn7vn9BwQ
  • 攻击GraphQLPPT:https://xzfile.aliyuncs.com/upload/zcon/2018/7_%E6%94%BB%E5%87%BBGraphQL_phithon.pdf

八、云原生条件下的Api安全

1、安全方面

  • 基础设施层API安全(容器集群、VM底层的组件通信)
  • 应用层API安全(应用代码业务逻辑涉及的API)
  • SaaS化云产品API(云数据库、中间件、消息服务、云计算平台等)
  • 云平台运维与管控API(云平台管理员的人为操作与机器操作)

2、防护方案

  • 南北向流量防护
  • 东西向流量防护

九、常见RPC框架支持的数据协议

远程过程调用(Remote Procedure Call),它是一种计算机通信协议,允许一个计算机程序调用另一个计算机上的子程序,而无需了解底层网络细节。通过RPC,一个计算机程序可以像调用本地程序一样调用远程程序,使得分布式应用程序的开发更加简单和高效。

在RPC中,调用者发送一个请求消息到远程主机,远程主机收到请求后执行相应的程序,并将结果返回给调用者。RPC通过序列化数据传输协议将数据打包并进行网络传输,常见的序列化协议有JSON、Protobuf、Thrift等。RPC通常使用TCP或UDP作为底层传输协议。

RPC架构设计需要考虑以下几个方面:

  • 接口设计:RPC的基础是远程调用,因此接口设计是关键。接口应该设计清晰、简洁、易于理解,并且具有良好的扩展性和兼容性。

  • 通信协议:RPC的通信协议需要支持高效的数据传输和序列化,同时也需要支持可靠性和安全性等方面的需求。常用的通信协议有HTTP、TCP、UDP等。

  • 数据传输格式:RPC通信的数据需要进行序列化和反序列化。常见的序列化格式有JSON、Protobuf、Thrift等。选用合适的数据传输格式可以提高RPC的性能和扩展性。

  • 负载均衡和容错处理:在分布式系统中,服务的负载均衡和容错处理是必不可少的。RPC架构需要考虑如何实现负载均衡和容错处理,例如使用负载均衡算法、使用备用服务等。

  • 安全性和可靠性:在RPC架构中,数据的安全性和可靠性也是非常重要的。需要考虑如何保证数据传输的安全性和可靠性,例如使用加密协议、数据压缩等。

十、扫描器技术可能遇到的问题

  • 接口怎么获取
    • api文档
  • 参数怎么获取
    • api文档
  • api的通信方式
  • api的数据协议
  • Springboot分版本

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值