【问题标题】:What steps should I take to protect my Google Maps API Key?我应该采取哪些措施来保护我的 Google Maps API 密钥?
【发布时间】:2010-11-24 18:59:44
【问题描述】:

我已获得我的域的 Google Maps API 密钥。

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

<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>

我很欣赏请求中的引用字段必须与我的域匹配,让我的密钥在脚本标签等中可见是否安全?还是我应该采取其他步骤?

【问题讨论】:

    标签: google-maps


    【解决方案1】:

    考虑到该密钥必须包含在您的 HTML 页面的 &lt;script&gt; 标记中,要从 google 的服务器加载 JS 文件/数据,您无能为力:

    • 您必须将其放入您的 HTML 文件中
    • 每个人都可以看看这些。

    不过,这并不重要:如果有人试图在您的域之外的其他域上使用此密钥,他们将收到 Javascript 警报——这对他们的用户来说并不好。

    所以:

    • 您无能为力;这就是它的工作方式
    • 我想说,您不必担心太多。

    【讨论】:

    • 我认为您可以在自己的站点上使用代理,该代理使用密钥来获取“真实”文件。完全没有意义,是的,但我认为这是可能的。
    • 认为值得检查以防我错过了什么。为那些回答的人干杯。
    • @Tim:不确定;我猜测JS代码本身是否会破坏显示地图的站点的域名,并且以某种方式将其与密钥中包含的信息进行比较似乎很正常——不过,我确实做到了不尝试。 ;;; @Brabster :-)
    • 例如,如果我们想保护我们的 API 密钥的带宽使用,这很重要。检查我的解决方案。
    • 如果我将api密钥用于自己的APP(windows/ios/android)怎么办?我可以模拟推荐人并将此密钥用于我自己的目的,费用由您承担!
    【解决方案2】:

    Google API 控制台上有一项设置可以保护您的 API 带宽使用不被其他域/用户使用。您可以通过在 API 控制台上使用引荐来源网址来限制和保护它。 API Key 将拒绝没有符合您限制的推荐人的请求。

    这是来自 Google 的 API 密钥屏幕截图,只能由 Google 使用它的两个域。

    【讨论】:

    • 移动用户呢?
    • 补充一点,详情可以在这里developers.google.com/maps/…
    • @MuhammadUmer 现在有一个单独的密钥安全设置来专门处理 android 应用程序。应用程序应该使用不同的密钥,以这种方式保护。在这种情况下,移动浏览器用户的功能与桌面浏览器用户相同。见cloud.google.com/docs/authentication/api-keys
    • 你将如何让它在本地主机上工作以进行测试?它只是一个单独的密钥,您不承诺用于生产吗?
    【解决方案3】:

    虽然这个问题是几年前的问题,但它是一个非常好的问题。据我了解,即使它们与域匹配,暴露 API 密钥仍可能导致滥用。 Security Stack Exchange 上的帖子在这里更详细地介绍了这一点。

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

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

    虽然我建议将所有这些都考虑在内,但有一种方法可以处理 Brabster 发布的特定示例,即将密钥存储在环境变量中。这样,您需要做的就是将密钥替换为存储在项目中的服务器端变量。但是,请务必不要将存储密钥的文件提交到公共存储库。

    【讨论】:

    • 我也觉得这个答案没有解决问题。地图 API 需要浏览器端的 javascript,任何获取该页面的人始终可以读取。
    【解决方案4】:

    您应该使用后端/服务器端来保护和处理密钥。在我的情况下,我使用了 Django f/w 服务器端,它可以提供 ajax 调用以从服务器脚本/db 获取密钥,然后将其传递给 google api。

    【讨论】:

    • 如果您的 API 密钥曾经到达浏览器,它可以被第三方检索。
    猜你喜欢
    • 2021-11-27
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2021-08-19
    • 2023-03-02
    • 1970-01-01
    相关资源
    最近更新 更多