当前位置: 首页 > 知识库问答 >
问题:

如何安全使用Google API密钥

赵朝
2023-03-14

所以我在我做的第一个项目上使用谷歌地图应用编程接口...所以是的,我是新来的,如果这是基本的或显而易见的,我很抱歉,但是我还没有找到一个明确的答案或方向。下面是我从谷歌找到的关于安全使用API密钥的留档。

安全使用API密钥的最佳实践

在应用程序中使用API密钥时,请注意确保它们的安全。公开披露您的凭据可能会导致您的帐户被泄露,这可能会导致您的帐户发生意外费用。要确保API密钥的安全,请遵循以下最佳做法:

不要直接在代码中嵌入API密钥:嵌入代码中的API密钥可能会意外地暴露给公众——例如,如果您忘记从共享的代码中删除密钥。不要在应用程序中嵌入API密钥,而是将它们存储在环境变量或应用程序源代码树之外的文件中。不要将API密钥存储在应用程序源代码树内的文件中:如果将API密钥存储在文件中,请将文件保留在应用程序源代码树之外,以帮助确保密钥不会最终出现在源代码控制系统中。如果您使用GitHub等公共源代码管理系统,这一点尤其重要。将API密钥限制为仅由需要它们的IP地址、引用者URL和移动应用使用:通过限制可以使用每个密钥的IP地址、引用者URL和移动应用,可以减少受损API密钥的影响。可以通过打开凭据页,然后创建具有所需设置的新API密钥,或编辑API密钥的设置,指定可以从控制台使用每个密钥的主机和应用。删除不需要的API密钥:为了最大限度地减少受到攻击的风险,请删除不再需要的任何API密钥。定期重新生成API密钥:可以通过单击每个密钥的重新生成密钥,从Cloud Platform控制台凭据页重新生成API密钥。然后,更新应用程序以使用新生成的密钥。生成替换密钥后,旧密钥将继续工作24小时。在公开发布代码之前检查代码:在公开代码之前,确保代码不包含API密钥或任何其他私人信息。

现在我的问题是,我不知道如何将谷歌地图整合到我的网站上,而不直接把它放在代码中。现在我的API在我的index.html是这样的:

<script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>

但这也是我的代码中直接告诉全世界的,我认为这是错误的。

共有2个答案

汪泓
2023-03-14

您所引用的API密钥最佳实践文章仅提供了使用API密钥的一般指导方针,对于某些面向最终用户的API,如谷歌地图JavaScript API,您无法避免向最终用户公开API密钥。

因此,在公共地图JavaScript API应用程序中,强烈建议对生产系统中使用的任何密钥(尤其是面向公众的密钥)添加引用限制,并且仅授权应用程序的域、主机甚至完整文件URL。

当您在Google API控制台中创建密钥并选择Maps JavaScript API的设置凭据时,向导将指导您如何保护密钥,并提示您输入要授权的URL。

华萧迟
2023-03-14

对于谷歌地图Javascript API v3,密钥必须在您的页面上公开。适用的案文是:

将API密钥限制为仅由IP地址、参考URL和需要它们的移动应用程序使用

转到GoogleAPI控制台并生成一个密钥,将其限制为您拥有的URL(或要放置地图的URL),以防止配额“盗窃”。

 类似资料:
  • 问题内容: 因此,我正在执行的第一个项目中使用Google Maps API。是的,我是新手,如果这是基础知识或显而易见的事情,我感到抱歉,但是我找不到明确的答案或方向。以下是我从Google找到的有关安全使用API​​密钥的文档。 安全使用API​​密钥的最佳做法 在应用程序中使用API​​密钥时,请注意确保其安全。公开暴露您的凭据可能会导致您的帐户遭到盗用,这可能会导致您的帐户发生意外费用。为

  • 我在工作中被要求保护保存在Mysql数据库中的敏感数据。这个数据库包含几个表,其中一个表中的关键数据只能使用Django中的API来访问。对于这个API,只有一定数量的人可以访问它,因此他们将是唯一能够访问这个表中的数据的人。 因此,目前的问题是每个人都可以访问数据库和该表,因此我们决定使用AES在AES_ENCRYPT()和AES_DECRYPT()函数的帮助下加密该表中的所有数据(根据http

  • 我在工作场所使用Git,公司政策不允许我以不安全的方式存储密码。有没有比使用

  • 我正在尝试将openapi/swagger文件导入api网关,但无法按预期获得安全设置。我希望所有路径都需要一个api密钥。 导入后在控制台中设置它所需的api密钥是可行的,但这种解决方案是不可取的,同样可行的是在每个路径中单独设置安全字段,但我正在寻找全局解决方案。 当我尝试导入文件时,我会收到以下警告: 看起来,我要么需要一个lambda作为api密钥的自定义授权器(我不熟悉授权器,但如果我在

  • 问题内容: 我有一个Java属性对象,其中包含Web服务的身份验证信息。我需要对这些数据进行加密,但是我不知道该将加密密钥存储在何处才能保持安全。 关于加密和以安全方式检索数据的最佳实践是什么? 使用密钥库有什么好处吗? 问题答案: 您的问题很普遍。在Linux中,用户密码存储在纯文本文件中。尽管只存储了密码哈希,但是如果攻击者可以访问该文件,则使用脱机词典攻击可以很快发现一些密码。在这种情况下,

  • 在flutter应用程序中存储key.jks文件对于flutter应用程序发布是安全的吗? 存储库密码、keyPassword、keyAlias 我的key.properties文件: