首页
学习
活动
专区
圈层
工具
发布

星巴克新漏洞:可访问1亿客户记录

当sam在星巴克官网上试图购买时,他发现了API调用的可疑之处:在以“ / bff / proxy /”为前缀的API下发送了一些请求,但这些请求返回的数据似乎来自另一台主机。...如果我们发现这样的API调用,那么尝试遍历有效负载并发送其他数据(实际上是在用户输入中接收)可能会更有帮助。 Sam仔细留意这个App,发现了更多的API调用。...如果将此输入作为内部系统上的路径处理,那么完全可能遍历它并访问其他内部端点。...app.starbucks.com{ "errors": [ { "message": "Not Found", "errorCode": 404, ......这个JSON响应与“ / bff / proxy”下所有其他常规API调用的JSON响应相同。这表明sam正在使用内部系统,并且已经成功地修改了正在与之交谈的路径。

1.3K20

在Laravel中使用Http::fake模拟测试的最佳实践

= Http::get('https://api.example.com/data'); 这样,所有的HTTP请求都会返回一个空的200状态码响应,而不会真正发送请求到外部服务器。...伪造特定URL的响应 最常见的场景是针对特定API端点伪造响应: Http::fake([ // 伪造GitHub API的响应 'github.com/*' => Http::response...模拟响应序列 当需要测试API返回多个不同响应的情况时,可以使用响应序列: Http::fake([ 'api.example.com/*' => Http::sequence()...), // 最后返回404错误 ]); // 第一次调用返回第一个响应 $first = Http::get('https://api.example.com/data'); // 第二次调用返回第二个响应...$second = Http::get('https://api.example.com/data'); // 第三次调用返回404 $third = Http::get('https://api.example.com

11310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在SpringSpringboot中异步处理异常

    上面的代码将返回 404 错误和如下图所示的信息。 现在让我们看一下在我们的应用程序中管理异常的第一个机制。..."path": "/api/v1/customers/100" } 作为安全措施,默认情况下 Spring 不会在响应中显示错误消息。...在我们的例子中,该方法将异常类型作为参数并返回一个 ResponseEntity。 它的工作方式是当抛出异常时,处理程序方法将拦截它并返回特定的响应(如果有的话)。...它的操作类似于提供预处理请求和后处理响应功能的过滤器/拦截器。它允许集中处理异常并促进代码重用。 首先,必须删除或注释上一节中的异常处理程序方法。...同样,命中端点http://localhost:8080/api/v1/customers/1001时的输出是预期的。

    1.6K10

    RESTful API的设计原则是什么?

    使用 HTTP 状态码 使用标准的 HTTP 状态码来表示请求的结果: 200 OK:请求成功。 201 Created:资源创建成功。...404 Not Found:请求的资源不存在。 500 Internal Server Error:服务器内部错误。 4. 支持无状态交互 服务器不应在请求之间存储任何客户端状态。...使用 HATEOAS(Hypermedia as the Engine of Application State) 在 API 响应中提供相关资源的链接,允许客户端通过这些链接动态发现其它资源。...在响应中应包含适当的内容类型(Content-Type)标头,如 application/json。 7. 版本控制 当 API 有重大变化时,应通过 URL 或请求头进行版本控制。...文档化 提供详细的 API 文档,说明每个端点的功能、请求方法、参数、返回格式和示例。这可以使用工具如 Swagger、OpenAPI 等进行自动化生成。

    55310

    flask 应用程序编程接口(API)最后一节

    ,规定服务器可以提供基于服务器的代码以响应客户端,这样一来,就可以从服务器上获取客户端的新功能。...password字段的特殊之处在于,它仅在注册新用户时才会使用。回顾第五章,用户密码不存储在数据库中,只存储一个散列字符串,所以密码永远不会被返回。...jsonify()函数返回一个默认状态码为200的瓶Response对象,因此在创建响应之后,我将状态码设置为对应的错误代码。 API将返回的最常见错误将是代码400,代表了“错误的请求”。...API中没有HTML或登录页面的概念,如果客户端发送带有无效或所有权凭证的请求,服务器必须拒绝请求并返回401状态码。...not_found_error(error): if wants_json_response(): return api_error_response(404) return

    6.2K10

    RESETful API 设计规范

    这种做法可以保持某些规模化上的灵活性。 客户端请求 API 返回的数据格式,不应该是纯文本,而应该是一个 JSON 对象,因为这样才能返回标准的结构化数据。...没有进行认证或者认证非法或失效 403 Forbidden 服务器已经理解请求,但是拒绝执行它 404 Not Found 该状态码表示用户请求的资源不存在,如 获取不存在的用户信息 (get /users.../9999999) 访问不存在的端点 都 必须 返回该状态码,若该资源已永久不存在,则 应该 返回 410 响应。...如在只接受 JSON 格式的 API 中放入 XML 类型的数据并向服务器发送,都 应该 返回该状态码。...如 API 设定为 60次/分钟,当用户在一分钟内请求次数超过 60 次后,都 应该 返回该状态码。

    2.2K10

    带有 Python REST Web 服务示例的 REST API 快速入门指南

    客户端应该只知道服务器上资源的 URI,别无其他。服务器应根据收到的客户端请求返回适当的响应。 2. 无国籍 客户端-服务器交互本质上应该是无状态的。...例如,200 OK 表示请求成功,404 NOT FOUND 表示在服务器上找不到资源。...我们在此服务中的资源将是文章,它将存储在 TGS 上发布的所有文章,格式如下 类别 观看次数 标题 我们将公开 REST 端点以添加、修改、删除和更新文章。基于 REST 的 CRUD 功能。...创建 API 端点和 REST 方法 接下来,我们需要创建 api 端点和所需的 REST 方法,如下所示。 GET 方法将在文章列表中搜索请求的类别,如果找到则返回数据以及响应代码 200 OK。...否则 404 未找到 class Article(Resource): def get(self, category): POST 方法将在文章列表中插入新的文章数据,并返回插入的数据并创建响应代码

    3.2K00

    开发中需要知道的相关知识点:什么是 OAuth?

    令牌是从授权服务器上的端点检索的。两个主要端点是授权端点和令牌端点。它们针对不同的用例分开。授权端点是您从用户那里获得同意和授权的地方。这将返回一个授权授予,表明用户已同意它。...然后将授权传递给令牌端点。令牌端点处理授权并说“很好,这是您的刷新令牌和访问令牌”。 您可以使用访问令牌来访问 API。一旦它过期,您将必须使用刷新令牌返回到令牌端点以获取新的访问令牌。...例如,您通过用户代理授权的前端通道流可能如下所示: 资源所有者开始流程以委托对受保护资源的访问 客户端通过浏览器重定向向授权服务器上的授权端点发送具有所需范围的授权请求 授权服务器返回一个同意对话框说“...范围来自 Gmail 的 API。redirect_uri 是授权授予应返回到的客户端应用程序的 URL。这应该与来自客户注册过程(在 DMV 处)的值相匹配。您不希望授权被退回到外国应用程序。...客户端应用程序使用前端通道流来获取授权码授予。客户端应用程序使用反向通道将授权代码授予交换访问令牌(以及可选的刷新令牌)。它假定资源所有者和客户端应用程序位于不同的设备上。

    2.5K40

    OAuth 详解 什么是 OAuth?

    令牌是从授权服务器上的端点检索的。两个主要端点是授权端点和令牌端点。它们针对不同的用例分开。授权端点是您从用户那里获得同意和授权的地方。这将返回一个授权授予,表明用户已同意它。...然后将授权传递给令牌端点。令牌端点处理授权并说“很好,这是您的刷新令牌和访问令牌”。 ? 您可以使用访问令牌来访问 API。一旦它过期,您将必须使用刷新令牌返回到令牌端点以获取新的访问令牌。...图片 例如,您通过用户代理授权的前端通道流可能如下所示: 资源所有者开始流程以委托对受保护资源的访问 客户端通过浏览器重定向向授权服务器上的授权端点发送具有所需范围的授权请求 授权服务器返回一个同意对话框说...范围来自 Gmail 的 API。redirect_uri 是授权授予应返回到的客户端应用程序的 URL。这应该与来自客户注册过程(在 DMV 处)的值相匹配。您不希望授权被退回到外国应用程序。...客户端应用程序使用前端通道流来获取授权码授予。客户端应用程序使用反向通道将授权代码授予交换访问令牌(以及可选的刷新令牌)。它假定资源所有者和客户端应用程序位于不同的设备上。

    7.2K20

    Asp.Net Web API 2第七课——Web API异常处理

    在默认情况下,大多数异常都被转换为一个带有状态码500的内部服务器错误的HTTP响应。 这个HTTPResponseException类型是一个特殊的类型。...这种异常会返回你在异常构造器中指定的任何HTTP状态码。例如,在以下方法中,如果这个id参数无效,那么会返回“404——未找到”。...HttpResponseException类型一个特殊的情况,因为它是专门设计用来返回一个HTTP响应的。   ...以下示例演示了如何用HttpError在响应体中返回HTTP状态码“404 — 未找到”: public HttpResponseMessage GetProduct(int id) { Product...该响应看上去大致像这样: HTTP/1.1 404 Not Found Content-Type: application/json; charset=utf-8 Date: Thu, 09 Aug 2012

    1.4K30

    HTTP接口设计

    响应请求 303 See Other : 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该使用 GET 方法进行请求。...比如在创建已经被创建的资源时,可以返回 303 307 Temporary Redirect : 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该保持原有的请求方法进行请求。...如果请求里有 Authorization 头,那么必须返回一个 `WWW-Authenticate` 头 403 Forbidden : 服务器拒绝执行 404 Not Found : 找不到目标资源...客户端发起的请求如果没有包含 If-Unmodified-Since 或者 If-Match 头,那就返回状态码 403 Forbidden ,在响应正文中解释为何返回该状态码 客户端发起的请求提供的...If-Unmodified-Since 或者 If-Match 头与服务器记录的实际修改时间或 ETag 的历史值匹配,但资源已经被修改过的时候,返回状态码 409 Conflict 客户端发起的请求提供的条件符合实际值

    2.3K20

    使用HTTP 404-File Not Found的C2

    尽管我知道HTTP 404 – File Not Found 会更难检测,但过滤/阻止主机访问HTTP 404 –File Not Found 很容易.但是,有多少安全设备会阻止HTTP 404?...在He Xu的文章中,他们实际上检测出来并见证了HTTP 404 – File Not Found C2,文章涵盖了他们发现的内容和技术发生的情况.简单来说,受感染的设备可以连接到此Web服务器...,但是会返回HTTP 404 – File Not Found .该HTTP 404 看起来是正常的,但是从源码上的注释我们可以看到包含base64编码的命令..这些命令是指令将自身复制到USB驱动器,...0x03 下一步是创建 C2 客户端.然后创建适用于Windows和Linux的命令来控制客户端,以及命令执行返回我们服务器的响应. 受感染的系统必须请求某个域....-404-page-not-found-c2/ 翻译:李木

    1.2K21

    13个构建RESTful API的最佳实践

    可能的端点列表将变得无穷无尽,而且对用户不是很友好。所以我们需要一种更有组织、更标准化的方式来设计API端点。...因此,你会调用以下端点:GET api.com/authors 。 当你阅读请求时,你无法判断API响应将只包含一个或所有作者。出于这个原因,API端点应该使用复数资源。...404 (Not Found):请求的资源不存在。 500 (Internal Server Error):每当服务器在请求执行过程中引发异常时。 状态码的完整列表可以在MDN[3]上找到。...": 24801, "more_info": "api.com/docs/errors/24801" } 在这个例子中,服务器返回状态码和一个人类可读的信息。...正确定义你的API所处理的不同资源将帮助你在未来避免与资源有关的问题。定义你的资源,还要准确定义它的属性和资源之间的关系。这样一来,在如何连接不同的资源上就没有争议的余地了。

    1.8K20

    express新手入门指南

    ,并且还可以链式调用: // 设置状态码为 404,并返回 Page Not Found 字符串 res.status(404).send('Page Not Found'); 提示 在这里我们并没有简单地列举...路径和请求方法合起来一般被称为 API 端点(Endpoint)。而服务器根据客户端访问的端点选择相应处理逻辑的机制就叫做路由。...HTTP 错误一般分为两大类: •客户端方面的错误(状态码 4xx),例如访问了不存在的页面(404)、权限不够(403)等等•服务器方面的错误(状态码 5xx),例如服务器内部出现错误(500)或网关错误...这张示意图和之前的图有两点重大区别: •每个路由定义本质上是一个中间件(更准确地说是一个中间件容器,可包含多个中间件),当 URI 匹配成功时直接返回响应,匹配失败时继续执行下一个路由•每个中间件(包括路由...)不仅可以调用 next 函数向下传递、直接返回响应,还可以抛出异常 从这张图就可以很清晰地看出怎么实现 404 和服务器错误的处理了: •对于 404,只需在所有路由之后再加一个中间件,用来接收所有路由均匹配失败的请求

    4K20
    领券