flutter - 将 Json 配置文件保存为 flutter 中的资产是否安全?

Awe*_*e T 2 dart flutter

我正在开发一个应用程序,我想知道存储配置文件的最佳方式是什么。现在,我计划使用 JSON 文件并将其另存为资产。但是,该文件很重要\xef\xbc\x8cit 不应该被其他人访问。

\n

jon*_*ges 11

我是网络安全方面的专家,我有一些考虑要说。首先,你不可能完全阻止攻击者访问敏感信息,你所能做的就是让它变得困难,通常需要数年时间才能成功,但没有什么是 100% 安全的逆向攻击工程。

第二个考虑因素是:只有一种方法可以从托盘中向攻击者提供数据,并且它可以被认为是保存敏感数据的最容易受到攻击的方法:保存到资产,在 json 文件中。你提到这件事似乎很讽刺。

Json 是现有的最人类可读的语言(并且不可能失去这个位置,读取引号中的文件及其值:即使对于那些不编程的人来说也是直观的),如果它位于资产文件夹中,编译后它将是一个完全不受保护的文件,无需反编译apk,只需使用任何文件滚轮即可提取该文件。这实际上是在说:查看并阅读我的文件,我求你了。

敏感数据必须存储在 Android 上的密钥库上,以及 iOS 上的钥匙串上。有一个 Flutter 插件可以为您抽象这一点(https://pub.dev/packages/flutter_secure_storage)。

作为网络安全专家,我需要告诉你,即使这样存储,你也不会100%安全,事实上,这种级别的安全性是不存在的。但我建议至少需要做一些工作并消除 99% 想要破坏您的应用程序的人:

将 json 转换为 String,并以加密的 FSS 形式保存,无需明文。当您需要该文件时,获取生成的字符串,解密它,然后将其转回 json。请记住,加密密钥也必须存储,或者如果您要将其放入代码中,请不要使用纯文本,请提前对其进行加密,或者至少将其转换为 base64(这不是安全性,它会只会使字面搜索变得困难),最后,不要使用“token”、“secure”、“secret”等词作为关键字,因为这些是第一个搜索的词。测试一些完全不寻常的东西,直到有一天我才使用木兰(我在这里计数,因为我改变了)。

  • 使用Hive的加密盒,并将盒的密钥存储在FSS中。为了生成密钥,Hive 有一个自动执行此操作的函数,但是,您将无法将其直接放置在 FSS 中,因为它需要一个字符串。您必须将字节数据转换为字符串进行存储,然后执行相反的操作来解密密钥,然后将其插入 Hive 的加密框。开箱前,先获取FSS钥匙,用钥匙打开箱子,即可正常使用。请注意 Hive 上密钥的名称,加密框仅加密值,密钥保持不变。 (2认同)