Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止我在网页上使用的API密钥被滥用_Javascript_Api_Google Maps_Http - Fatal编程技术网

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

Javascript 如何防止我在网页上使用的API密钥被滥用,javascript,api,google-maps,http,Javascript,Api,Google Maps,Http,如何屏蔽API密钥和令牌(在JS代码和http调用头中),使使用Firebug或开发人员工具的人无法提取和使用它?例如,谷歌地图API键 Google API密钥在我的HTML文件中 令牌位于http的头中 请求,或URL中的参数 任何平台中的API都可以使用不受限制的API密钥。但是,您可以选择向API密钥添加限制。一旦受到限制,密钥将仅在支持该类型限制的平台上工作 要为API密钥添加限制,请执行以下操作: 转到谷歌云平台控制台 从项目下拉菜单中,选择包含要保护的API密钥的项目 从导航菜单中

如何屏蔽API密钥和令牌(在JS代码和http调用头中),使使用Firebug或开发人员工具的人无法提取和使用它?例如,谷歌地图API键

Google API密钥在我的HTML文件中

令牌位于http的头中 请求,或URL中的参数


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

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

  • 转到谷歌云平台控制台
  • 从项目下拉菜单中,选择包含要保护的API密钥的项目
  • 从导航菜单中,选择API&服务>凭据
  • 在“凭据”页面上,单击要保护的API密钥的名称
  • 在API密钥页面上的密钥限制下,设置应用程序限制。
    • 选择HTTP引用程序(网站)
    • 添加推荐人(按照说明操作)
    • 单击保存
  • 有关更多信息,请查看谷歌概述他们的网站。我将强调他们的两项建议:

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

    但是,是什么阻止其他人向我的服务器发出相同的呼叫呢。如果它不受密钥保护,他们可以,如果它受密钥保护(我可以在头中传递、在头中传递或作为参数传递),这会阻止其他人使用该密钥并调用我的服务器。谢谢,我知道这对谷歌来说是多么好,但是其他不允许限制的API呢?如果您询问中间人攻击,那么您的请求必须通过HTTPS。这里有一个小小的解释:。如果这个问题不适用于谷歌,它还会是重复的吗?链接副本(以及我在那里找到的其他副本)的大部分建议都专门适用于谷歌,并不是保护API密钥的通用解决方案。