React Native的异步存储是否安全?

时间:2016-08-25 15:02:53

标签: react-native asyncstorage

我想在React Native应用程序中本地存储敏感数据。

数据是否只对编写它的应用程序可用?

8 个答案:

答案 0 :(得分:29)

AsyncStorage不适合存储敏感信息。您可能会发现这很有用:https://github.com/oblador/react-native-keychain

它使用facebook conceal / android keystore将加密数据存储到iOS上的SharedPreferences(Android)和keychain。 (我与人共同撰写了lib)。请务必阅读整篇自述文件,了解它提供的内容。

答案 1 :(得分:7)

不,AsyncStorage对敏感数据不安全。 AsyncStorage只是将数据保存到手机硬盘上的文档中,因此任何有权访问手机文件系统的人都可以读取该数据。当然,这对你来说是否有问题取决于你对感性数据的意思。"

至少在iOS上,由于Apple的沙盒策略,数据只适用于编写它的应用程序。由于AsyncStorage不加密任何数据,因此这不会阻止具有对文件系统的root访问权的越狱iPhone获取他们想要的任何内容。但一般情况下,不要将敏感数据保存到AsyncStorage,原因与您不应该在javascript代码中对敏感数据进行硬编码相同,因为它可以很容易地反编译和读取。

答案 2 :(得分:4)

对于非常敏感的应用或用户数据,您可以尝试在iOS上使用https://github.com/oblador/react-native-keychain(使用iOS Keychain)或在Android和iOS上使用https://github.com/classapp/react-native-sensitive-info(使用Android共享首选项和iOS Keychain)。< / p>

它们都具有非常流畅的API和直接的方式与react-native link链接,并且是一种更安全的方式来保存您想要远离窥探的数据。

答案 3 :(得分:3)

我在我正在处理的项目上面临同样的问题,我们使用AsyncStorage的自定义包装器,存储了一些数据,然后我们尝试检索相同的数据......就这样了容易。

我们使用Realm加密选项来解决这个问题,它比AsyncStorage更简单,更快速,更好。

答案 4 :(得分:1)

否,它不安全。考虑使用https://github.com/oblador/react-native-keychain之类的库进行安全存储。

如果您正在使用Expo,则可以使用Expo.SecureStore在设备上本地加密和安全地存储键值对。文档:https://docs.expo.io/versions/latest/sdk/securestore

答案 5 :(得分:1)

我为redux-persist创建了一个安全的存储模块,该模块使用react-native-keychain存储加密密钥,并使用CryptoJS加密AsyncStorage中静止的redux存储。您可以在以下位置找到该模块:

redux-persist-encrypted-async-storage

它的用法在链接的自述文件中进行了讨论。

答案 6 :(得分:0)

  

来自本地反应文档 - https://facebook.github.io/react-native/docs/asyncstorage.html

     

AsyncStorage是一个简单的,未加密的,异步的,持久的键值存储系统,对应用程序来说是全局的。

它不安全,因为它以未加密的形式在设备上存储键值对。

它使用iOS的钥匙串和Android的KeyStore来安全地存储数据。

答案 7 :(得分:0)

不,由于它未加密,因此不安全。我建议您使用Expo的secureStore

如果您要通过Expo构建应用程序:

// in managed apps:
import { SecureStore } from 'expo';

如果您要构建为裸机

// in bare apps:
import * as SecureStore from 'expo-secure-store';

在此处了解更多信息:https://docs.expo.io/versions/v32.0.0/sdk/securestore/