在客户端应用程序中保护YouTube v3 API密钥

时间:2014-09-04 04:03:32

标签: youtube google-api youtube-api youtube-javascript-api

我正在查看以下指南:https://developers.google.com/youtube/v3/getting-started

与YouTube的API互动的第一步是:

  

您需要Google帐户才能访问Google Developers Console,   请求API密钥,并注册您的申请。

他们继续展示他们使用密钥的例子:

  

URL:   https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY        &安培;部分=片断,contentDetails,统计,状态

我有一个客户端应用程序,很多人都使用它。该应用程序向YouTube的API发出搜索请求。 YouTube的API每天的请求数量限制为5000万次。

由于它是一个客户端应用程序,我的API密钥嵌入到代码中。

今天,恶意用户编写了一些内容来最大化请求:enter image description here

我想知道我有什么办法可以抵御这种活动。我唯一的选择是托管服务器,通过我的服务器路由所有对YouTube API的需求,并在太频繁时拒绝请求吗?

我真的担心实现类似的东西。它会有效地使每个API请求的等待时间加倍,并且还会给服务器增加一笔看似不必要的金额,但可能需要它。

我还有其他选择吗?

由于

7 个答案:

答案 0 :(得分:4)

不要认为它是恶意用户。我认为YouTube方面出了问题,因为我看到与我的应用程序发出的API请求完全相同的问题 enter image description here

答案 1 :(得分:3)

您可以使用限制来保护您的API密钥。

使用公共API密钥的REFERERS属性。转到console developers -> API&Auth -> Credentials

中的项目
  • 如果您使用Key进行浏览器应用,REFERERS是对它的引用 一个域名。
  • 如果使用服务器密钥,REFERERS是对IP的引用。 (例如,您的服务器的IP)

例如,如果您使用github.io进行应用程序的实时演示,REFERERS将指向http://user.github.io/*

您可以阅读更多register your application

  
      
  • 如果您的应用程序在服务器上运行,请使用服务器密钥。不要使用它   服务器代码之外的密钥。例如,不要将其嵌入网络中   页。要防止配额被盗,请限制您的密钥,以便提出请求   只允许从您的服务器'源IP地址。

  •   
  • 使用浏览器密钥   如果您的应用程序在客户端上运行,例如Web浏览器。至   防止您的密钥被用于未经授权的网站,只允许   来自您管理的域名的推介。

  •   

帮助您的屏幕:
enter image description here

答案 2 :(得分:2)

这是由于配额成本增加,暂时还原。我们将在http://apiblog.youtube.com/https://developers.google.com/youtube/v3/revision_history中公布费用变化。

答案 3 :(得分:1)

这似乎是一个重大错误。同样的问题 - 配额使用情况在9月3日开始疯狂刺激,现在请求费用高于documentation states

有人报告说这是他们的错误跟踪系统的缺陷。我建议每个受影响的人去那里并为缺陷做好准备,以引起对它的关注:

答案 4 :(得分:0)

我提出以下想法:

  • 您可以确保访问您网页的用户是人(使用Captcha等)
  • 隐藏您的前端触发的AJAX调用背后的API调用(如GET / callgoogleapi);
  • AJAX调用的处理程序可以设置频率阈值,即每秒2个请求。如果速度太快,则不会进行API调用,并且AJAX会回复“用户操作太快”等消息。

答案 5 :(得分:0)

这是正确的。当你制作你的钥匙时,请确保你使用了REFERERS,这样即使他们确实得到你的钥匙也不会对他们有效!

答案 6 :(得分:-1)

我们也看到了这个错误,似乎偏差太大了。结果概述是813.844,但今天使用的API为49,379,348 50,000,000个请求