一些大型 API 提供商实际上如何执行白名单域?

问题描述 投票:0回答:1

我使用过很多大型 API,例如 Google 地图、Facebook 登录、Font Awesome Pro 等。在其中许多 API 中,您会看到一个将域列入白名单的部分。基本上,如果传入的请求来自此白名单域,则会被接受。否则,它将被丢弃。这对我来说很有意义,但实际上是如何执行的呢?如果您已经知道列入白名单的域名,似乎 HTTP 请求很容易被伪造。

一个很好的例子就是在 HTML 上加载 Font Awesome Pro 包。您会获得一个放入的 JS 脚本标签,但在他们的仪表板上,您可以将您的域列入白名单。但是,如果我网站的恶意访问者想要,他们已经知道我的域名,并且可以伪造请求并使用我的 Font Awesome Pro 软件包。那么这实际上是如何运作的呢?

http security http-headers whitelist
1个回答
0
投票

他们在 API 的 http 请求中使用

Referer
和/或
Origin
请求标头。当然,这是可以伪造的。从合适的客户端,您可以使用您想要的任何值设置任何标头。

但不在浏览器中。

在现代的、未经修改的浏览器中,攻击者无法将相同的 Javascript 嵌入到 他们的 来源(~域)的 他们的 页面中,并且仍然在请求中发送您的 Javascript。因此,他们可以从自己的客户端或应用程序发送请求,但他们无法使用您的访问权限创建自己的网站供“其他”用户(他们)使用,这就是重点。这也是唯一要防止的事情。这些 Javascript 通常在浏览器上下文之外并没有真正的意义,所以通常就很好。 作为进一步的论点,您可以说作为攻击者,您可以代理这些请求。如果攻击者设置他们的网站,并在他们的服务器端实现代理,他们的客户端向他们的后端发出请求,他们的后端使用你的凭据向真实的 API 发出请求,该怎么办?在极少数情况下,这实际上是有意义的(即他们为什么要这样做,有什么好处?),如果 API 所有者有任何监控,他们会很快将这样的服务器列入黑名单,例如因为正常请求来自来自用户的所有不同家庭 IP 地址,但所有这些请求都来自同一服务器。这将相当容易过滤。因此,对于许多 API 来说,这也是可以接受的威胁。

© www.soinside.com 2019 - 2024. All rights reserved.