如何处理 APIKey?

问题描述 投票:0回答:1

我正在使用 Flutter 开发一个应用程序,但我不确定如何处理 API 密钥。如果我不使用环境变量,我必须直接在 AppDelegate.swift 或 AndroidManifest.xml 中编写 API 密钥。然而,据说从安全角度来看,使用 API 密钥的环境变量是不安全的。

但是,虽然人们经常提到从安全角度来看,使用 API 密钥的环境变量是不安全的,但没有任何地方提供具体的解决方案。

最终,API 密钥应该如何正确包含在 Flutter 应用程序中?

flutter api dart security
1个回答
0
投票

我假设您正在谈论 Google API 密钥,

所以,是的,在环境变量中保存/存储 API 密钥并不安全,因为您可以轻松解密包并获取 API 密钥字符串。

但是,要使用 Google API 密钥,您需要使用密钥库签署您的 APK 并使用您的精确包名称 (com.company.appid)。

这意味着,即使有人从您的 APK 中获取了您的 Google API 密钥,他们也无能为力。因为他们需要使用您的密钥库签署 APK 才能使用该 API 密钥。

回到警告。关于不在环境中使用 API 密钥的警告是一般性警告,并非特定于 Google api 密钥。

例如,如果您从 openai 聊天中存储 api 密钥,那将是危险的,因为有人可以轻松获取该 api 密钥并使用该 api,因为该密钥没有 Google api 密钥所具有的任何限制。

为了保护密钥,您可以创建一些后端实现,可以使用该密钥调用 api。因此,您可以将密钥放在后端,而不是将密钥放在客户端(移动应用程序),在后端,如果不访问服务器几乎不可能获取密钥。并且你可以创建自己的api来调用open ai api。

有点像这样。

客户端 => 后端(带密钥)=> openAI API => 后端 => 客户端。

© www.soinside.com 2019 - 2024. All rights reserved.