如何在我的 Electron 应用程序中隐藏 API 键?
How to hide the API key in my Electron application?
我正在构建一个使用 Google 的 YouTube 数据 API v3 的 Electron 应用程序。
为了访问 API,我决定使用标准的 API 密钥(而不是 OAuth,因为我不会访问任何个人数据)。
但问题是,我无法在我的应用程序中隐藏 API 密钥,而且我也无法使用引荐来源限制(引荐来源限制允许您过滤哪些网站可以使用您的 API 密钥(通过 HTTP 地址)),因为这是一个 Electron 应用程序。所以基本上,如果有人查看源代码(或者甚至只查看开发人员工具),他们就可以看到密钥并自由使用它。
有什么建议吗?谢谢
对于不需要用户注册或登录的应用程序,保护您的 API 密钥的唯一方法是将其置于服务器代理之后。因此,当他们启动应用程序时,应用程序会连接到您的服务器,服务器然后 returns API 密钥因此它仅以动态形式驻留在应用程序中,用户永远看不到。
但是,如果他们使用数据包嗅探器或本地代理可以获取您的令牌,这仍然是不安全的。
最安全的方法是从您的应用有权访问的私人服务器发出所有 API 请求。因此,该应用程序不会向 Youtube 发出任何请求,它只会从您的服务器获取数据。
然后,您可以通过使用私钥签署 API 对您的私人服务器的请求来保护您的应用程序。例如,您可以在应用程序中有一个配置文件,其中包含在每个 API 请求的 header 中发送的私钥。然后,他们获取您的密钥的唯一方法是反编译您的应用程序,然后访问该配置文件,然后使用相同的私人信息向您的私人服务器发出 API 请求。然后,为了防止恶意用户,您可以监控流量并设置请求限制,例如每个应用每秒 1 个请求。任何超过该限制的应用程序都可能 black-listed 作为 DDOS 攻击或恶意用户。
数据流看起来像这样。
App -> Server (with Api Key) -> youtube (data) -> Server (data) -> App
我正在构建一个使用 Google 的 YouTube 数据 API v3 的 Electron 应用程序。 为了访问 API,我决定使用标准的 API 密钥(而不是 OAuth,因为我不会访问任何个人数据)。
但问题是,我无法在我的应用程序中隐藏 API 密钥,而且我也无法使用引荐来源限制(引荐来源限制允许您过滤哪些网站可以使用您的 API 密钥(通过 HTTP 地址)),因为这是一个 Electron 应用程序。所以基本上,如果有人查看源代码(或者甚至只查看开发人员工具),他们就可以看到密钥并自由使用它。
有什么建议吗?谢谢
对于不需要用户注册或登录的应用程序,保护您的 API 密钥的唯一方法是将其置于服务器代理之后。因此,当他们启动应用程序时,应用程序会连接到您的服务器,服务器然后 returns API 密钥因此它仅以动态形式驻留在应用程序中,用户永远看不到。
但是,如果他们使用数据包嗅探器或本地代理可以获取您的令牌,这仍然是不安全的。
最安全的方法是从您的应用有权访问的私人服务器发出所有 API 请求。因此,该应用程序不会向 Youtube 发出任何请求,它只会从您的服务器获取数据。
然后,您可以通过使用私钥签署 API 对您的私人服务器的请求来保护您的应用程序。例如,您可以在应用程序中有一个配置文件,其中包含在每个 API 请求的 header 中发送的私钥。然后,他们获取您的密钥的唯一方法是反编译您的应用程序,然后访问该配置文件,然后使用相同的私人信息向您的私人服务器发出 API 请求。然后,为了防止恶意用户,您可以监控流量并设置请求限制,例如每个应用每秒 1 个请求。任何超过该限制的应用程序都可能 black-listed 作为 DDOS 攻击或恶意用户。
数据流看起来像这样。
App -> Server (with Api Key) -> youtube (data) -> Server (data) -> App