web-dev-qa-db-ja.com

React Nativeの非同期ストレージは安全ですか?

機密データをReactネイティブアプリにローカルに保存したい。

データは、それを作成したアプリのみが利用できますか?

38
yogiben

AsyncStorageは、機密情報の保存には適していません。これは役に立つかもしれません: https://github.com/oblador/react-native-keychain

Facebook conceal/Androidキーストアを使用して、暗号化されたデータをiOSのSharedPreferences(Android)およびキーチェーンに保存します。 (私はlibを共同執筆しました)。 README全体を読んで、それが提供するものを理解してください。

31
vonovak

いいえ、AsyncStorageは機密データに対して安全ではありません。 AsyncStorageは、電話のハードドライブ上のドキュメントにデータを保存するだけなので、電話のファイルシステムにアクセスできる人はだれでもそのデータを読み取ることができます。もちろん、これが問題になるかどうかは、「機密データ」の意味に依存します。

少なくともiOSでは、Appleのサンドボックスポリシーにより、データを書き込んだアプリのみがデータを利用できることは事実です。 AsyncStorageはそのデータを暗号化しないため、ファイルシステムへのルートアクセスを持つジェイルブレイクされたiPhoneが必要なものを取得することを停止しません。しかし、一般に、機密データをAsyncStorageに保存しないでください。同じ理由で、javascriptコードに機密データをハードコーディングしないでください。簡単に逆コンパイルして読み取ることができるからです。

7
Michael Helvey

非常に機密性の高いアプリまたはユーザーデータの場合は、iOSで https://github.com/oblador/react-native-keychain (iOSキーチェーンを使用)または https:/ /github.com/classapp/react-native-sensitive-info Android and iOS(uses Android Shared Preference and iOS Keychain)の両方の場合。

どちらも非常に流fluentなAPIとreact-native linkとの直接的なリンク方法を備えており、pr索好きな目から遠ざけたいデータをより安全に保存する方法です。

5
Aftab

私が取り組んでいるプロジェクトで同じ問題に直面しました.AsyncStorageのカスタムラッパーを使用し、いくつかのデータを保存してから、同じデータを取得しようとしました...それはとても簡単でした。

暗号化オプションで Realm を使用することで、この問題を克服しました。AsyncStorageよりも簡単で、速く、優れたソリューションでした。

3
XaviMorenoM

いいえ、安全ではありません。安全なストレージのために https://github.com/oblador/react-native-keychain のようなライブラリーの使用を検討してください。

Expoを使用している場合は、Expo.SecureStoreキーと値のペアを暗号化し、デバイスにローカルに安全に保存します。ドキュメント: https://docs.expo.io/versions/latest/sdk/securestore

1
pyankoff

react-native-keychainを使用して暗号化キーを保存し、CryptoJSを使用してAsyncStorageに保存されているredux-storeを暗号化するredux-persist用の安全なストレージモジュールを作成しました。モジュールは次の場所にあります。

redux-persist-encrypted-async-storage

その使用法は、リンクのreadmeで説明されています。

1
Chaudhry Junaid

いいえ、暗号化されていないため安全ではありません。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/

1
Daggie Blanqx

反応ネイティブドキュメントから- https://facebook.github.io/react-native/docs/asyncstorage.html

AsyncStorageは、アプリ全体に適用される、シンプルで暗号化されていない非同期の永続的なキーと値のストレージシステムです。

キーと値のペアを暗号化されていない形式でデバイスに保存するため、安全ではありません。

IOSではキーチェーンを使用し、Androidではデータを安全に保存するためにKeyStoreを使用しました。

0