youtube-api - 如何在我的 Electron 应用程序中隐藏 API key ?

标签 youtube-api electron api-key

我正在构建一个使用 Google 的 YouTube 数据 API v3 的 Electron 应用程序。
为了访问 API,我决定使用标准 API key (而不是 OAuth,因为我不会访问任何个人数据)。

但问题是,我不能在我的应用程序中隐藏 API key ,也不能使用引荐来源网址限制(引荐来源网址限制允许您过滤哪些网站可以使用您的 API key (通过 HTTP 地址)),因为这是一个 Electron 应用.所以基本上,如果有人查看源代码(甚至只是查看开发人员工具),他们可以看到 key 并自由使用它。

关于做什么的任何建议?谢谢。

最佳答案

为不需要用户注册或登录的应用程序保护 API key 的唯一方法是将其放在服务器代理后面。因此,当他们启动应用程序时,应用程序会访问您的服务器,然后服务器会返回 API key ,因此它仅以动态形式驻留在应用程序中,用户永远不可见。

但是,如果他们使用数据包嗅探器或本地代理来获取您的 token ,这仍然是不安全的。

最安全的方法是从您的应用程序可以访问的私有(private)服务器发出所有 API 请求。因此,该应用程序不会向 Youtube 发出请求,它只会从您的服务器获取数据。

然后,您可以通过使用私钥将 API 请求签名到您的私有(private)服务器来保护您的应用程序。例如,您可以在应用程序中有一个配置文件,其中包含一个在每个 API 请求的 header 中发送的私钥。然后,他们获取您的 key 的唯一方法是反编译您的应用程序,然后访问该配置文件,然后使用相同的私有(private)信息向您的私有(private)服务器发出 API 请求。然后,为了防止恶意用户,您可以监控流量并设置请求限制,例如每个应用每秒 1 个请求。任何超过该限制的应用程序都可能被列为 DDOS 攻击或恶意用户。

数据流看起来像这样。

    App -> Server (with Api Key) -> youtube (data) -> Server (data) -> App

关于youtube-api - 如何在我的 Electron 应用程序中隐藏 API key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36114717/

相关文章:

youtube - 如何(如果可以)通过特定大小(大)的YouTube API视频进行检索?

objective-c - 尝试通过Youtube API直接上传并获取无效请求(NSURLErrorDomain错误400。)

node.js - 是否可以使用 Nightmare.js (v2 Electron) 将信息从浏览器传递到 Node 作用域?

php - 在应用程序中实现(安全)Api key

video - 如何使用YoutubeAPI v3检索视频的相关视频

youtube - 如何在 APIv3 中列出稍后观看列表?

node.js - 如何在Electron-Forge中成功高效地安装SQLite3?

javascript - 内置到exe文件后,Electron应用程序无法正常运行

Java youtube API 错误 403 未经身份验证的使用超出每日限制

c# - Flickr API key 存储