我在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密钥。
还有其他人经历过这个吗?该怎么办?