【发布时间】:2022-08-17 01:23:10
【问题描述】:
我正在构建一个颤振应用程序。
我不想通过将secret_key 放入代码中来破坏我的secret_key,因此我尝试制作.env 文件并创建了一个apk。然后我解压缩了apk并在那里找到了我的配置文件。所以现在我不这样做了。
我尝试的下一件事是在构建应用程序时使用--dart-define 变量声明来放置我的secret_key,我正在使用它访问它
const secret = String.fromEnvironment(\"secret_key\");
来到这个问题,这些变量在飞镖代码中的位置,有没有办法通过逆向工程来获取它们。 基本上以这种方式放置我的密钥是否安全?
-
是的,它是安全的,因为您需要在构建命令中定义
--dart-define变量,并且在生成这些密钥时,它不会保存在代码中的任何位置。 -
如果您的代码在运行时需要
secret_key,那么它并不是严格安全的。您的代码可以做的任何事情,有足够决心的人也可以通过检查您的代码来做。 -
@jamesdlin 你是什么意思?我没明白。我的用例是使用该密钥调用 API。没有它,我无法调用 API。
-
我的意思是,严格来说,您要问的是不可能的。如果在客户端上运行的代码需要一个固定的秘密才能运行,则客户端需要访问该秘密,并且有足够决心的人将能够从客户端代码中提取它。见How to store a secret API key in an application\'s binary?
-
谢谢,@jamesdlin。收到。但是
--dart-define保存除了二进制文件之外在代码中没有任何痕迹的变量呢?
标签: flutter dart secret-key