Google 地理编码 API 安全性

Posted

技术标签:

【中文标题】Google 地理编码 API 安全性【英文标题】:Google geocoding API security 【发布时间】:2018-12-30 07:01:24 【问题描述】:

我在广泛阅读 Google 推荐的方法后提出这个问题,但我对所有这些方法都有疑问,让我解释一下情况。

我使用地理定位和地理编码 API 的组合来了解大致的状态位置,然后显示相关内容。地理定位 API 显然需要从浏览器中调用,以获取用户的适当地理定位。 Google 为此 API 提供了基于 HTTP Referrer 的限制。我知道有人可以轻松欺骗引荐来源网址并使用相同的 API 密钥进行调用。即使 Google 建议这样做,我也没有看到巨大的优势。

另一方面,Google 不允许将 HTTP Referrer 用于地理编码 API,但它允许用于 MAPS javascript API。但同样,如果您不使用 Google 地图,那么使用该 API 将违反 Google 的条款。现在 google 建议将使用地理编码网络服务 API 的代码移动到后端,以便保护您的密钥。但由于最终我需要将结果传递给可公开访问的前端 Web 应用程序,并且我只能进行基于浏览器的 Ajax 调用以首先获取地理定位以提供给地理编码,因此我最终需要进行 Ajax 调用以获取我的地理编码信息。然后,有人可以轻松地锁定我的端点,并随心所欲地调用地理编码 API。因此,对于这种情况,我想知道什么是理想且安全的处理方式。可能还有其他 API 可能是这种情况的理想情况。

【问题讨论】:

我在尝试使密钥更安全时遇到了一个非常相似的问题,并且没有为您提供答案,但我确实想对密钥位置发表评论。您可以在 HTTP 空间之外的 Web 服务器上创建一个文件夹,并且站点的编程仍然可以访问它,而无需使用 Ajax 来访问它。然而,安全性的提升尚不清楚,因为它仍然需要以某种方式调用(它是从我网站上的 php 函数内部调用的)才能工作。 @DonP 我不明白从 PHP 调用它是什么意思?交互来自客户端正确吗?如果它来自客户端,只是让它远离 Web 根目录,然后使用您的服务器端语言将其注入 dom,以便客户端代码可以使用它,无论是使用 ajax 调用它还是通过服务器端加载它都没有任何区别渲染 我没有从客户端使用它,也不知道该怎么做。我所有的编程都是 PHP,包括一个生成 URL 本身的函数和更多的函数,它们共同提供站点需要的值,并将其插入到数据库中。 【参考方案1】:

在我的例子中,我没有做任何地图,所以它完全是在服务器端获取纬度、经度和两点之间的行驶距离。这今天来自 Google 支持,这可能会有所帮助,如果您使用地图,那么这些链接可能会提供进一步的见解。

关于 API 限制,请注意 HTTP 引荐来源网址不会 使用地理编码 API,因为 HTTP 引荐来源网址只能用于客户端 边服务。换句话说,Geocoding 是一个 Web 服务 API,并且 应该只用于服务器端实现。 IP地址 限制应该用于 Web 服务 API。但是,如果你是 在网站中使用地理编码 API,IP 地址限制不会 工作。请检查每个 API 的适当限制 以下链接:

https://developers.google.com/maps/api-key-best-practices#api_key_table

要完成这项工作,您应该创建一个单独的密钥并使用新的 您的地理编码 API 请求 URL 中的一个。您可以添加限制 此密钥通过使用“API 限制”,并将其限制为地理编码 仅限 API。如果您不想创建另一个密钥,您可以继续使用 您当前的,但请确保更改您的实施和使用 来自 Maps JavaScript API 的客户端地理编码服务。在 这种情况,请参考此文档:

https://developers.google.com/maps/documentation/javascript/geocoding

另一个建议是从您的 ISP 获取静态 IP 地址, 特别是如果您打算在公共网站上使用它。为了 开发目的,一个合理的解决方案是获得三个独立的 键:一个用于登台和测试,另一个用于服务器端请求 第三个用于客户端请求。这样,你正在制作 确保您的 API 密钥受到保护。

【讨论】:

以上是关于Google 地理编码 API 安全性的主要内容,如果未能解决你的问题,请参考以下文章

Google地理编码API无法识别某些邮政编码

Google 地理编码 API 为邮政编码返回 ZERO_RESULTS

Google 地理编码 API 无法识别某些邮政编码

Google 地理编码 API - REQUEST_DENIED

Google 地理编码 API - 仅在一个国家/地区搜索

使用 Google Maps Javascript API V3 反向地理编码检索邮政编码