4

我在考虑 Google Static Maps API,它将您限制为 1000 个静态地图,如果您注册一个帐户则更多。当客户端上的所有内容都是公开的时,他们如何跟踪帐户等?

对于大多数服务器到服务器的 API,我都获得了 access_token/key/etc。我可以将其传递给服务以证明我确实是我,但在客户端上任何此类 access_token/key/etc。将立即成为公众知识。

一般来说,客户端库(FB SDK、Stripe、Google 等)使用什么策略来执行身份验证,以及它们如何绕过客户端上的所有内容都是公开的这一事实?

4

1 回答 1

1

您可以将 API 密钥配置为按主机列入白名单,这会告诉 Google 地图只允许从发送与您的白名单匹配的引荐来源网址的站点使用 API 密钥。

如果其他站点使用您的 API 密钥,他们将在加载时收到以下错误消息:

此网站需要不同的 Google Maps API 密钥。可以在http://code.google.com/apis/maps/documentation/javascript/v2/introduction.html#Obtaining_Key生成新密钥。

您可以使用 FireFox 的RefControl 扩展来验证这一点:

这有效,因为:

  • 几乎所有的网络浏览器都会发送一个referrer (即链接到它的资源的URI)作为请求的一部分。
  • 对于窃取您的 API 密钥的人(因为正如您所说,它是一个公开可用的字符串),他们需要告诉所有用户覆盖他们的引荐来源网址以匹配他们从中窃取它的网站(这显然不切实际)。

请注意,Google 似乎允许不包含引荐来源网址的请求 - 我猜配置为排除此信息的浏览器数量很少,因此不值得关注。

于 2012-05-18T08:54:49.427 回答