Fra*_*asa 8 security dart flutter
我有一些敏感数据(api 密钥)要存储在客户端的应用程序中,我知道存储此类信息是一种不好的做法,但目前没有可行的替代方案,我已经在篡改如果此类密钥泄露可能会出现问题,但我想知道在编译期间在构建中编码此类密钥是否安全,在反编译代码的情况下,即使混淆了,检索编译是否会更困难-时间变量?
这是我如何使用它的示例
flutter build apk --dart-define=APP_VERSION=0.1.2 --dart-define=SECRET_KEY=123456
Run Code Online (Sandbox Code Playgroud)
Rob*_*ier 20
这与任何其他方法一样不安全。
(如果未使用定义,它将被删除,但显然您想使用它。)
void main() {
const String key = String.fromEnvironment('SECRET_KEY');
print(key);
runApp(const MyApp());
}
Run Code Online (Sandbox Code Playgroud)
我在这里使用“SEKRET”而不是“123456”,因为普通 APK 中有很多“123456”字符串,它可能会给出误报。
flutter build apk --dart-define=APP_VERSION=0.1.2 --dart-define=SECRET_KEY=SEKRET
Run Code Online (Sandbox Code Playgroud)
cd build/app/outputs/flutter-apk/
mkdir app
cd app
unzip ../app-release.apk
Run Code Online (Sandbox Code Playgroud)
strings lib/x86_64/libapp.so | grep SEKRET
> SEKRET
Run Code Online (Sandbox Code Playgroud)
这与将字符串硬编码到应用程序中没有什么不同。将其“隐藏”在定义中没有任何好处,并且没有办法真正确保这一点。你能做的最好的事情就是混淆视听,并希望攻击者的动机不是太强烈。或者在每次他们破解您的系统时投资于持续的混淆和强化改进。(这是非常困难和昂贵的,而且就其本质而言,没有普遍或永久的解决方案。)
您无法在二进制文件中隐藏 API 密钥。您无法隐藏应用程序在内存中使用的 API 密钥。您无法可靠地向控制应用程序运行硬件并有动力寻找这些秘密的人保守秘密。
| 归档时间: |
|
| 查看次数: |
3772 次 |
| 最近记录: |