如何在React Native离线游戏中安全地存储解决方案



我正在用React Native为Android开发一款类似智力竞赛的游戏。我把所有游戏的数据都放在一个JSON文件中,所有的问题和答案都是未加密的。当应用程序启动时,我加载这个JSON文件,并将所有需要的数据保存在Realm数据库(移动数据库(中。然后我在AsyncStorage中设置了当前版本号,这样这个过程只在需要时(或应用程序更新时(发生,而不是在每个应用程序启动时发生。它运行得很好。

我知道React Native应用程序中的每一个文件、每一行代码都被认为是可访问的,而不是安全的。我想找到一种方法来保护我的游戏数据的安全和隐私,这样它就不会在网上共享。

用户可以在他的Android手机上访问json文件吗?root访问怎么办?

我确实考虑过一些解决方案:

  • 如果我的游戏是在线的,我可以直接获取它,但我的问题是,我需要在应用程序的捆绑包中提供游戏的数据,这样我的游戏就可以先离线
  • 我可以加密存储在Realm数据库中的数据,但我用来填充这个数据库的json文件仍然是未加密的,这有什么意义
  • 我可以加密/解密json文件,但如何在不公开源代码的情况下存储加密密钥

不幸的是,我认为我想要实现的是不可能的。。。

谢谢!

Realm支持数据库加密,请在加密部分找到详细信息。

Realm支持在创建Realm时通过提供64-byte encryption key来使用AES-256+SHA2加密磁盘上的数据库文件。

AsyncStorage不支持开箱即用的加密。它不适合存储敏感信息。但您可以分别在Android和iOS中使用SharedPreferanceKeyChain来安全地存储数据。此库让您轻松使用:https://github.com/oblador/react-native-keychain

最新更新