我应该采取哪些措施来保护我的Google Maps API密钥?

bra*_*ter 82 google-maps

我已为我的域获取了Google Maps API密钥.

我获取密钥时提供的示例显示了嵌入在请求参数中的密钥,例如:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=my-key" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

我感谢请求中的referrer字段必须与我的域匹配,在脚本标记中使我的密钥可见是否安全?或者我还有其他步骤吗?

Pas*_*TIN 86

考虑到密钥必须包含在<script>HTML页面的标签中,要从谷歌服务器加载JS文件/数据,您无能为力:

  • 你必须把它放在你的HTML文件中
  • 每个人都可以看看那些.

尽管如此,这并不重要:如果有人试图在另一个域上使用此密钥而不是你的,他们将获得一个Javascript警报 - 这对其他用户来说并不好.

所以:

  • 你无能为力; 这是它的工作方式
  • 我会说,你应该担心的并不多.

  • 我认为您可以在自己的网站上使用代理来使用密钥来获取"真实"文件.完全没有意义,是的,但我认为这是可能的. (5认同)
  • 例如,如果我们想保护我们的 API 密钥的带宽使用,这很重要。检查我的解决方案。 (3认同)
  • 如果我将api密钥用于自己的APP(Windows / ios / android),该怎么办?我可以模拟引荐来源网址,并出于您自己的目的使用此密钥,费用由您承担! (2认同)

Ifa*_*bal 19

Google API控制台上有一个设置可以保护您的API带宽使用不被其他域/用户使用.您可以在API控制台上使用referrer来限制和保护它.API密钥将拒绝没有符合您限制的引荐来源的请求.

以下是Google针对API Key的屏幕截图,该屏幕只能由Google用于其两个域. 在此输入图像描述

  • 移动用户呢? (3认同)

rjb*_*ude 10

虽然这个问题已有几年历史,但它是一个非常好的问题.据我所知,它暴露API密钥,即使它们是域匹配的,仍然可能导致滥用.这里有一篇关于Security Stack Exchange的文章,更详细地介绍了这一点.

Google可以在此发布您可以采取的避免潜在滥用行为的步骤:

安全使用API​​的最佳实践指南: https ://support.google.com/cloud/answer/6310037?hl = zh-CN

虽然我建议将所有这些都放在船上,但是有一种方法可以处理Brabster发布的特定示例,并将密钥存储在环境变量中.这样,您只需将密钥替换为存储在项目中的服务器端变量即可.但是,请确保不将存储密钥的文件提交到公用存储库.

  • 我也觉得这个答案没有解决这个问题.maps API需要浏览器端的javascript,任何提取页面的人都可以读取它. (10认同)