谷歌地理编码API安全性

5

在广泛阅读谷歌推荐的方法之后,我想问一个问题,但是我对所有这些方法都有问题,让我解释一下情况。

我使用地理定位和地理编码API的组合来了解大致的州位置,然后显示相关内容。显然需要从浏览器调用地理定位API以获取用户的适当地理位置。对于此API,Google提供了基于HTTP Referrer的限制。我知道有人可以轻松伪造引荐者并使用相同的API密钥进行调用。尽管Google建议这样做,但我认为这没有太大优势。

另一方面,Google不允许使用HTTP Referrer进行地理编码API,但它确实允许MAPS JavaScript API使用。但是,如果您不使用Google地图,则使用该API将违反Google的条款。现在,Google建议将使用地理编码Web服务API的代码移到后端,以便保护您的密钥。但是,由于最终需要向公共可访问的前端Web应用程序传递结果,并且我只能进行基于浏览器的Ajax调用来首先获取地理位置以提供给地理编码,因此我最终需要进行Ajax调用以获取我的地理编码信息。然后,有人可以轻松地附加到我的端点上,以便在上面进行打包并随意调用地理编码API。因此,对于这种情况,我想知道处理的理想和安全方式是什么。也许还有其他API可能是这种情况的理想选择。


我在尝试使密钥更安全方面遇到了非常相似的问题,但我没有答案,但我想评论一下密钥位置。您可以在Web服务器上创建一个位于HTTP空间之外的文件夹,并且该文件夹仍然可以通过站点的编程访问,无需使用Ajax即可访问它。但是,由于仍然需要以某种方式调用它(在我的网站上从PHP函数内部调用),因此其安全性收益并不清楚。 - user5175034
1
@DonP,我不明白你所说的从PHP调用是什么意思?交互是来自客户端对吗?如果是来自客户端,那么只需将其放在Web根目录之外,然后使用服务器端语言将其注入到DOM中,以便客户端代码可以使用它,无论是使用Ajax调用还是通过服务器端渲染加载都没有任何区别。 - shakeel osmani
我没有从客户端使用它,也不知道如何使用。我的所有编程都是PHP,包括一个生成URL本身的函数和另外几个协同工作的函数,提供站点需要的值,并将其插入数据库中。 - user5175034
1个回答

6
在我的情况下,我没有使用地图,因此所有的操作都是在服务器端完成,目的是获取两个点之间的纬度、经度和驾驶距离。今天从谷歌支持获得了一些信息,如果您正在使用地图,则这些链接可能会提供更多的见解。
关于API限制,请注意HTTP引用程序不适用于Geocoding API,因为HTTP引用程序仅可用于客户端服务。换句话说,Geocoding是一个Web服务API,应该只用于服务器端实现。Web服务API应使用IP地址限制。但是,如果您在网站中使用Geocoding API,则IP地址限制将无法使用。请在以下链接中检查每个API的合适限制:https://developers.google.com/maps/api-key-best-practices#api_key_table 要使其工作,您应该创建一个单独的密钥,并在您的Geocoding API请求URL中使用新密钥。您可以通过使用“API限制”向此密钥添加限制,并将其限制为仅Geocoding API。如果您不想创建另一个密钥,可以继续使用当前密钥,但请确保更改您的实现并使用Maps JavaScript API中的客户端Geocoding服务。在这种情况下,请参阅此文档:https://developers.google.com/maps/documentation/javascript/geocoding 另一个建议是从您的ISP获取静态IP地址,特别是如果您计划在公共网站上使用它。为了开发目的,一个好的解决方案是获得三个单独的密钥:一个用于暂存和测试,另一个用于服务器端请求,第三个用于客户端请求。这样,您就可以确保您的API密钥受到保护。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接