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

yog*_*ben 41 react-native asyncstorage

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

数据仅供编写它的应用程序使用吗?

von*_*vak 35

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

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

  • 隐藏库将加密数据作为字节数组返回(据我记得),而不是字符串.因此字节数组被编码为base64字符串然后保存(sharedPreferences不支持保存字节数组). (4认同)
  • Android 上的 Base64 不是一种安全的数据存储方式 (2认同)
  • 它与世博会配合得好吗? (2认同)

Dag*_*nqx 15

不,它不安全,因为它没有加密。我建议你使用 Expo 的 secureStore

如果您正在从 Expo 构建您的应用程序:

// in managed apps:
import { SecureStore } from 'expo';
Run Code Online (Sandbox Code Playgroud)

如果你正在构建一个裸应用

// in bare apps:
import * as SecureStore from 'expo-secure-store';
Run Code Online (Sandbox Code Playgroud)

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

  • 这是最新且相关的答案。自从这个问题被首次提出以来,生态系统中发生了很多事情,上面提出的解决方案已内置在 expo 中,并且开箱即用,易于使用。 (2认同)

Mic*_*vey 8

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

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


小智 5

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

它们都具有非常流畅的API和直接的链接方式,react-native link是一种更安全的数据保存方式,您可以避免窥探。