请求简单API访问密钥时的引用安全性

时间:2014-04-06 22:04:01

标签: google-chrome-extension google-api

我在Google Chrome扩展程序中工作。扩展程序不发送" Referer"发出请求时的标头,但可以通过使用chrome.webRequest.onBeforeSendHeaders来(可能)修改此行为。

我正在尝试与Google的YouTube V3 API进行通信。为此,我必须提供API密钥。对服务器的成功请求如下:

$.ajax({
    url: 'https://www.googleapis.com/youtube/v3/playlists?part=snippet&id=ALYL4kY05133rTMhTulSaXKj_Y6el9q0JH&key=AIzaSyBWegNdKdnwKGr2bCKRzqXnWw00kA7T2lk',
    success: function (response) {
        console.log("Success", response);
    },
    error: function (error) {
        console.log("Error:", error);
    }
});

现在,此请求有效,因为我已转到我的Google API Console并创建了一个简单API访问浏览器密钥,其允许的引用设置为:

  

参考者:任何引用者都允许

这对我来说似乎是一个安全漏洞,因为我想确保只允许我的程序查询API。但是,Google非常清楚他们并不关心这个漏洞,因为任何人都可以随时申请API密钥。

那就是说,我想知道这是否是正确的实施方式。 Google API控制台内部有一个区域,可让您为已安装的应用程序定义"客户端ID"与特定的Google Chrome扩展程序相关联。

配置此安装的应用程序客户端ID后,我可以与chrome.identity.getAuthToken

进行交互

这会为给定的客户端生成有效的OAuth2身份验证令牌,这绝对是我在安全性方面感兴趣的。但是,我无法使用此OAuth2令牌来完成Google API请求。它不会将OAuth2令牌确认为有效的客户端ID(为什么要这样做?)也不会提供任何接受OAuth2令牌的方法。

所以,我还挂在这里。我有一种方法可以请求相对安全的令牌,但它在请求中实际上并不可用。并且,我有另一种非常不安全的方法来生成一个开箱即用的API密钥。

还有其他人经历过这个吗?该怎么办?

0 个答案:

没有答案