如果 API 有了新的需求,我们可以轻松地添加另一个执行这个需求的端点:1)编写一个新函数,并将其放在一个新端点之后;2)现在,客户可以访问这个端点,并获取符合其需求的信息。 高性能。...因此,客户端要么会担心调用特定端点的带来的任何可能的副作用,要么需要尝试弄清楚要调用的端点,因为客户端不了解服务器如何命名其函数。 可发现性低。...SOAP 的消息由这些部件组成: · 一个信封标签:用于开始和结束每条消息 · 包含请求或响应的正文 · 一个标头:用于表示消息是否由某些规范或额外要求的来确认 · 故障通知:包含了可能在请求处理过程只能够发生的任何错误...内置错误处理。SOAP API 规范允许返回带有错误码及其说明的的 XML 重试消息。 一系列的安全拓展。SOAP 与 ES-Security 集成,因此 SOAP 可满足企业级事务要求。...API 向服务端发送一个庞大的查询,该 API 返回一个仅包含我们所需数据的 JSON 响应。
接下来继续探讨一下两者的区别,在常规SSRF的情况下,查看服务器是否返回显示有关内部服务的任何信息的响应。 ? 服务器响应是否包含内部页面的服务信息或HTML内容?...首先为易受攻击的端点提供已识别的内部计算机的不同端口,并确定端口之间的服务器响应行为是否存在差异。...这让EC2实例能够访问返回关于实例本身的数据API(在地址169.254.169.254上)。 Google Cloud上还提供了类似于EC2的实例源数据API服务。...:True” 但是,这种保护可以很容易地绕过,因为可以通过API v1beta1端点访问通过APIV1访问的大多数端点。...(与前面类似) 同样,使用盲SSRF进行端口扫描的工作方式与此相同: 如果服务器为某些端口返回200状态代码,为其他端口返回500状态代码,则产生200状态代码的端口可能是机器上打开的端口。
如果 API 有了新的需求,我们可以轻松地添加另一个执行这个需求的端点:1)编写一个新函数,并将其放在一个新端点之后;2)现在,客户可以访问这个端点,并获取符合其需求的信息。 高性能。...因此,客户端要么会担心调用特定端点的带来的任何可能的副作用,要么需要尝试弄清楚要调用的端点,因为客户端不了解服务器如何命名其函数。 可发现性低。...SOAP 的消息由这些部件组成: 一个信封标签:用于开始和结束每条消息 包含请求或响应的正文 一个标头:用于表示消息是否由某些规范或额外要求的来确认 故障通知:包含了可能在请求处理过程只能够发生的任何错误...内置错误处理。SOAP API 规范允许返回带有错误码及其说明的的 XML 重试消息。 一系列的安全拓展。SOAP 与 ES-Security 集成,因此 SOAP 可满足企业级事务要求。...缓存 客户端 - 服务器体系结构:允许双方独立发展 应用程序的层级系统 服务端向客户端提供可执行代码的能力 实际上,某些服务仅在某种程度上是 RESTful 的。
例如,使用来自Web或应用程序服务器的访问日志输出是一种跟踪事务时间或错误统计的有效方法。可以通过工具来解析这些日志条目,从匹配的输出中创建指标,并使它们可供Prometheus作业抓取。...这种类型的探针监控也称为黑盒监控,因为我们将内部应用程序视为黑盒。...在exporter内部,我们定义了一系列执行特定检查的模块,例如,检查Web服务器是否正在运行,或者DNS记录是否解析。在exporter运行时,它会在URL上暴露这些模块和API。...exporter执行检查并将生成的指标返回给Prometheus。在某些情况下,没有可以从中抓取指标的目标。造成这种情况的原因有很多:安全性或连接性问题,使你无法访问目标资源。...Pushgateway是一个独立服务,它在HTTP REST API上接收Prometheus指标。Pushgateway位于发送指标的应用程序和Prometheus服务器之间。
500 INTERNAL SERVER ERROR – [*] 服务器发生内部错误,客户端无法得知结果,即便请求已经处理成功 状态码范围 1xx范围的状态码是保留给底层HTTP功能使用的,并且估计在你的职业生涯里面也用不着手动发送这样一个状态码出来...这些请求应该是幂等的,不会改变任何服务器的状态。 5xx范围的状态码是保留给服务器端错误用的。这些错误常常是从底层的函数抛出来的,并且开发人员也通常没法处理。...在非超媒体RESTful API的情景中,URL端点是服务器与客户端契约的一部分。这些端点必须让客户端事先知道,并且修改它们也意味着客户端可能再也无法与服务器通信了。你可以先假定这是一个限制。...文档化每一个端点所预期的响应代码和可能的错误消息,和在什么情况下会产生这些的错误消息 如果你有富余的时间,那就创建一个控制台来让开发者可以立即体验一下API的功能。...当你设计API时,你应该能够使用工具去查看原始的HTTP封包。Wireshark是个不错的选择。同时,你也该采用一个框架/web服务器,使你能够在必要时修改某些字段的值。
服务器和客户端之间的交互机制归结为调用端点并获取响应。 易于添加功能。...因此,客户端要么担心调用特定端点可能带来的副作用,要么会因为不理解服务器函数的命名方式而尝试弄清楚要调用哪个端点。 可发现性低。...内置错误处理。SOAP API 规范允许返回带有错误代码及其解释的“重试”XML 消息。 一系列安全扩展。SOAP与 WS-Security 协议集成,满足企业级事务质量要求。...向服务器发送一个大规模查询后,API 将返回一个 JSON 响应,其数据结构与我们请求的数据完全一致。...与 SOAP 类似,GraphQL 提供发生的错误的详细信息。其错误消息包含所有解析器,并指向出错的确切查询部分。 灵活的权限。GraphQL允许选择性地公开某些函数,同时保留隐私信息。
首先,如果某些工作会受到影响,我们可能会首先在自由职业市场看到,因为大公司在采用 AI 工具方面的速度较慢。...与写文章不同,使用 AI 工具创建视觉上惊艳的图像需要了解如何构建良好的提示词、如何调整提示词以及大量的试验和错误。...虽然我不期望大多数公司在 Upwork 上招聘很多机器学习专家,但机器学习工作的数量至少应该有所增加,对吧? 结果证明,这两个假设都是完全错误的。...自 ChatGPT 和 OpenAI API 发布以来,与开发聊天机器人相关的工作数量激增了 2000%。如果今天有一个 AI 的杀手级用例,那就是开发聊天机器人。...相反,它们更多的是将 OpenAI 的 API 集成到现有产品中,并开发聊天机器人替代客户服务代理。 结论 自 ChatGPT 发布以来,Upwork 上的写作、客户服务和翻译工作明显减少。
然后,这些内部用户就可以对该功能进行初步验证,但仅限于模拟数据所能展示的状态。很自然地,为了更全面地验证功能,他们可能会发送一些特殊的请求,看看当 API 响应返回某些临界值时,该功能的表现如何。...如果产品经理需要验证该功能在相应端点返回新数据、过期数据或无数据时的外观变化,那么他们只需通过模拟服务器的 UI 界面选择相应的选项。...此外,一旦后端完成了真正的 API 端点,我们可以立即关闭模拟服务器。...在此之后,模拟服务器的每个端点可能只会返回一个响应。为了消除这个限制,用户界面(UI)允许用户控制模拟服务器的实例化时间,以根据用户偏好加载不同的模拟响应。...然而,无论采用何种技术,模拟的定义完全是在前端完成的,也就是说,将常规的 API 验证和错误处理与任何后端服务分隔开来。
服务器不应跟踪可能影响将来请求结果的任何内部状态。 统一接口:最后,一致性定义了客户端和服务器之间的交互方式。...500(Internal Server Error):内部服务器错误,服务器在执行请求期间引发异常。 状态码的完整列表可以在Mozilla Developers找到。...这些是服务器可能返回的速率限制标头: X-Rate-Limit-Limit:告诉客户端在指定时间间隔内可以发送的请求数。..., "more_info": "api.com/docs/errors/24801" } 在此示例中,服务器返回状态代码和人类可读的消息。...此外,还返回内部错误代码,供开发人员查找特定错误,这使开发人员可以快速查找有关该错误的更多信息。
过程从客户端(如移动应用或Web应用)发起对API的请求开始。此请求包含必要信息,例如API端点、HTTP方法以及如果身份验证凭据和数据有效负载。 在收到请求后,API服务器根据预定义规则处理它。...然后,API服务器与执行请求所需的后端服务进行通信,这可能包括数据库查询、与第三方服务互动或其他内部服务。 后端服务处理数据并执行所需操作(如创建、更新或检索资源)。...一旦处理了数据,API服务器就会准备响应,并通常将其转换为JSON或XML等标准格式。然后, API 服务器将响应发送回客户端, 并附上状态代码以指示请求结果, 如成功、失败或错误。...对于返回大型数据集的API来说,实现分页是关键,因为它会以较小块返回数据,提高响应速度并减轻客户端与服务器上负载。...为了有效地诊断问题并解决问题,请提供清晰而详尽错误信息,并附上适当HTTP状态代码。编写全面、最新且易于获取文档涵盖所有方面包括端点、数据格式、认证和使用示例。
该漏洞源于 /api/v1/index/retrieve 端点,该端点允许通过用户提供的 URL 检索公钥,从而能够向任意内部服务发起 SSRF GET 请求。...尽管由于响应不会返回给调用者,该 SSRF 无法改变状态或泄露数据,但它允许攻击者对内部网络进行盲 SSRF 探测。...该漏洞存在于 /api/v1/index/retrieve 端点,该端点接受用户提供的 URL 来检索公钥。此功能允许攻击者诱使服务器向任意内部或外部 URL 发送 HTTP GET 请求。...此外,服务器不会将响应内容返回给攻击者,从而防止直接的数据泄露。然而,攻击者可以进行盲 SSRF 攻击,利用服务器作为代理探测内部网络资源,并可能绘制内部基础设施图或识别易受攻击的服务。...这可能导致发现敏感的内部端点、配置错误或易受攻击的服务,这些都可能成为后续攻击的目标。虽然该漏洞不允许直接数据泄露或状态更改,但通过盲 SSRF 收集的信息可以促进网络内的横向移动或权限提升。
作者 | Simon Willison 译者 | 王强 策划 | 万佳 我上周在 Twitter 上发起了一个关于 API 端点的讨论。...相比一次返回 100 个结果,并要求客户端对所有页面进行分页以检索所有数据的 API,这些流式传输大量数据的端点可以作为替代方案: 假设这种流式传输端点有了高效的实现,那么提供流式 HTTP API 端点...另外,出于性能原因,某些系统也只允许访问前 N 页。 提供一个你可以点击的单一 HTTP 端点,该端点将一次性返回你的所有数据(可能是数十或数百 MB 大小)。 我今天想要谈论的是最后一个选项。...实现说明 实现这种模式时需要注意的关键是内存使用:如果你的服务器在需要为一个导出请求提供服务时都需要缓冲 100MB 以上的数据,你就会遇到麻烦。 某些导出格式比其他格式更适合流式传输。...挑战:如何返回错误 如果你正在流式传输一个响应,你会从一个 HTTP 200 代码开始……但是如果中途发生错误,可能是在通过数据库分页时发生错误会怎样?
从历史上看,某些服务允许在 post 正文参数甚至 GET 查询字符串中发送令牌,但这些方法也有缺点,大多数现代实现将仅使用 HTTP 标头方法。...你的应用程序唯一应该用它做的就是用它来发出 API 请求。某些服务将使用 JWT 等结构化令牌作为其访问令牌,如自编码访问令牌中所述,但在这种情况下,客户端无需担心解码令牌。...例如,Google 的 API 使用 OpenID Connect 提供一个 userinfo 端点,该端点可以返回有关给定访问令牌的用户的信息,或者您可以改为从 ID 令牌获取用户信息。...访问令牌可能因多种原因而过期,例如用户撤销应用程序,或者如果授权服务器在用户更改密码时使所有令牌过期。 如果您发出 API 请求并且令牌已经过期,您将收到一个表明此情况的响应。...您可以检查此特定错误消息,然后刷新令牌并再次尝试请求。 如果您使用的是基于 JSON 的 API,那么它可能会返回带有错误的 JSON 错误响应invalid_token。
“泄露” 的内部机制表现为使数据库结构可以从某些 API 端点访问。 例如,下面的 POJO(“Plain Old Java Object”)类表示数据库中的一个表: ?...返回 TopTalentEntity 实例可能很诱人,但更灵活的解决方案是创建一个新的类来表示 API 端点上的 TopTalentEntity 数据。 ?...与一致性主题密切相关,服务器端的错误处理值得特别强调。...作为一名 API 开发者,理想情况下你希望覆盖所有面向用户的端点,并将他们转换为常见的错误格式。...6、错误六:不使用基于注解的验证 假设我们之前的 TopTalent 服务需要一个端点来添加新的 TopTalent。此外,假设基于某些原因,每个新名词都需要为 10 个字符长度。
2、错误二:内部结构 “泄露” 公开你的内部结构,从来都不是一个好主意,因为它在服务设计中造成了不灵活性,从而促进了不好的编码实践。“泄露” 的内部机制表现为使数据库结构可以从某些 API 端点访问。...返回 TopTalentEntity 实例可能很诱人,但更灵活的解决方案是创建一个新的类来表示 API 端点上的 TopTalentEntity 数据。...与一致性主题密切相关,服务器端的错误处理值得特别强调。...作为一名 API 开发者,理想情况下你希望覆盖所有面向用户的端点,并将他们转换为常见的错误格式。...6、错误六:不使用基于注解的验证 假设我们之前的 TopTalent 服务需要一个端点来添加新的 TopTalent。此外,假设基于某些原因,每个新名词都需要为 10 个字符长度。
这种做法可以保持某些规模化上的灵活性。 客户端请求 API 返回的数据格式,不应该是纯文本,而应该是一个 JSON 对象,因为这样才能返回标准的结构化数据。...资源过滤 如果记录数量很多,服务器不可能都将它们返回给用户。API 应该 提供参数,过滤返回结果。下面是一些常见的参数。 ?page=10:指定返回记录的数量 ?.../9999999) 访问不存在的端点 都 必须 返回该状态码,若该资源已永久不存在,则 应该 返回 410 响应。...如在只接受 JSON 格式的 API 中放入 XML 类型的数据并向服务器发送,都 应该 返回该状态码。...50x 服务器错误 500 Internal Server Error 503 Service Unavailable 数据响应格式 错误格式 对于错误数据,默认使用如下结构: 'message' =>
在响应中返回错误详情 当 API 服务器处理错误时,如果能够在返回的 JSON body 中包含错误信息,对于接口调用者来说,会一定程度上帮助他们完成调试。...你可能知道,HTTP 中你可以返回带有 200 状态码的错误响应,但这是十分糟糕的。不要这么做,你应当返回与返回错误类型相一致的具有一定含义的状态码。...比如,如果一个 POST 类型的端点返回 201 Created,那么所有的 POST 端点都应返回同样的状态码。这样做的好处在于,调用者无需在意端点返回的状态码取决于某种特殊条件,也就形成了一致性。...某天,我在将某个 API 端点集成到项目中,但是我总是收到 500 Internal Error 的错误,我调用的端点差不多看起来这样: POST: /entities ``` 调试一段时间之后...巧用 202 Accepted 我发现 202 Accepted 在某些场合是 201 Created 的一个非常便捷的替代方案,这个状态码的含义是: 服务器已经接受了你的请求,但是到目前为止还未创建新的资源
2.3、使用 API 网关 通常更好的方法是使用 API 网关。API 网关是一个服务器,是系统的单入口点。它类似于面向对象设计模式中的门面(Facade)模式。...API 网关封装了内部系统架构,并针对每个客户端提供一个定制 API。它还可用于认证、监控、负载均衡、缓存和静态响应处理。 图 2-3 展示了 API 通常如何整合架构 ?...它可以在 Web 协议(如 HTTP 和 WebSocket)和用于内部的非 Web 友好协议之间进行转换。 API 还可以为每个客户端提供一个定制 API。...然而,如果产品信息服务没有响应,那么 API 网关应该向客户端返回错误。 如果可以,API 网关还可以返回缓存数据。...如果服务的错误率超过指定阈值,Hystrix 将会跳闸,所有请求将在指定的时间内立即失败。Hystrix 允许您在请求失败时定义回退操作,例如从缓存读取或返回默认值。
GraphQL API 端点数量 多个专用端点 单一端点 访问控制 基于路径控制 需在resolver层实现 数据过滤 预定义的响应格式 客户端可选择返回字段 错误处理 状态码反映错误 状态码通常为200...6.1.1 基本检测步骤 识别GraphQL端点 寻找/graphql、/api/graphql等常见路径 检查应用源代码中的API调用 使用代理工具监控网络流量 执行内省查询 尝试访问__...7.5.1 安全的错误处理策略 环境感知错误 开发环境:详细错误信息 生产环境:通用错误消息 错误分类与处理 输入验证错误 认证/授权错误 服务器错误 业务逻辑错误 7.5.2 错误处理实现...事件概述:2021年,研究人员发现Facebook某些GraphQL端点存在配置错误,允许未授权访问内省查询,可能导致API结构泄露。...攻击方式:攻击者利用暴露的内省功能,获取了API结构信息,包括类型定义、字段名称和关系。 影响范围:可能泄露内部API设计和潜在的敏感字段名称。