Youtube api 如何在我的电子应用程序中隐藏API密钥?

Youtube api 如何在我的电子应用程序中隐藏API密钥?,youtube-api,electron,api-key,Youtube Api,Electron,Api Key,我正在构建一个使用谷歌YouTube数据API v3的电子应用程序。 为了访问API,我决定使用标准API密钥(而不是OAuth,因为我不会访问任何个人数据) 但问题是,我不能在我的应用程序中隐藏API密钥,也不能使用引用限制(引用限制允许您筛选哪些网站可以使用您的API密钥(通过HTTP地址)),因为这是一个电子应用程序。因此,基本上,如果有人查看源代码(甚至只是查看开发人员工具),他们可以看到密钥,并自由使用它 有什么建议吗?谢谢。对于不需要用户注册或登录的应用程序,保护API密钥的唯一方法

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

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


有什么建议吗?谢谢。

对于不需要用户注册或登录的应用程序,保护API密钥的唯一方法是将其置于服务器代理之后。因此,当他们启动应用程序时,应用程序会接触到您的服务器,然后服务器返回API密钥,因此它只以动态形式驻留在应用程序中,用户永远看不到它

然而,如果他们使用数据包嗅探器或本地代理,他们可以抓取您的令牌,这仍然是不安全的

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

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

数据流看起来像这样

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

你的应用程序需要用户登录吗?@AaronFranco No.(不使用OAuth,只使用api密钥)我的意思是要访问你的应用程序,用户需要用你的应用程序创建帐户吗YouTube@AaronFranco不,它不需要任何形式的身份验证。为什么不要求用户提供他们的令牌(或自己登录YT)?2020年有更好的解决方案吗?@vaibhavS只需使用OAuth,现在实现起来相当容易,不需要验证,只需直接调用我的firebase服务器,而无需设置额外的服务器。