如何防止我在网页上使用的API密钥被滥用

时间:2019-05-24 16:56:37

标签: javascript api google-maps http

我如何掩盖API密钥和令牌(在JS代码和http调用标头中),以便使用Fire Bug或开发人员的人无法提取和使用它?例如google maps API密钥。

  

Google API密钥在我的HTML文件中。

     

令牌位于http的标题中    请求或URL中的参数。

2 个答案:

答案 0 :(得分:2)

任何平台上的API都可以使用不受限制的API密钥。但是,您可以选择对API密钥添加限制。一旦受到限制,该密钥将仅在支持该类型限制的平台上起作用。

要为API密钥添加限制,请执行以下操作:

  1. 转到Google Cloud Platform控制台。
  2. 从“项目”下拉菜单中,选择包含要保护的API密钥的项目。
  3. 从导航菜单中,选择API和服务>凭据。
  4. 在“凭据”页面上,单击要保护的API密钥的名称。
  5. 在“ API密钥”页面上的“密钥限制”下,设置“应用程序限制”。
    • 选择HTTP引荐来源网址(网站)。
    • 添加引荐来源网址(按照说明进行操作)。
    • 单击“保存”。

有关更多信息,请检查Google Documentation

答案 1 :(得分:0)

Google概述了他们的API Key Best Practices。我将重点介绍他们的两个建议:

  • 限制API,使其只能在您的域中使用。即使其他人看到了您的密钥,他们也将无法使用它,除非请求所来自的网页是您在服务器/域上。 (但是,某些人可能会欺骗该请求,就像它来自您的域一样。)您还可以限制可以调用的API,这对于攻击者来说就没有太大用处了。
  • 使用代理服务器,这样就不会暴露密钥。无需直接调用Google API,而是向服务器发出请求,然后服务器调用Google API并将数据发送回去。由于您的代理服务器已经知道您的密钥,因此无需将私人信息传输到用户的浏览器。