機密データをReactネイティブアプリにローカルに保存したい。
データは、それを作成したアプリのみが利用できますか?
AsyncStorageは、機密情報の保存には適していません。これは役に立つかもしれません: https://github.com/oblador/react-native-keychain
Facebook conceal/Androidキーストアを使用して、暗号化されたデータをiOSのSharedPreferences
(Android)およびキーチェーンに保存します。 (私はlibを共同執筆しました)。 README全体を読んで、それが提供するものを理解してください。
いいえ、AsyncStorageは機密データに対して安全ではありません。 AsyncStorageは、電話のハードドライブ上のドキュメントにデータを保存するだけなので、電話のファイルシステムにアクセスできる人はだれでもそのデータを読み取ることができます。もちろん、これが問題になるかどうかは、「機密データ」の意味に依存します。
少なくともiOSでは、Appleのサンドボックスポリシーにより、データを書き込んだアプリのみがデータを利用できることは事実です。 AsyncStorageはそのデータを暗号化しないため、ファイルシステムへのルートアクセスを持つジェイルブレイクされたiPhoneが必要なものを取得することを停止しません。しかし、一般に、機密データをAsyncStorageに保存しないでください。同じ理由で、javascriptコードに機密データをハードコーディングしないでください。簡単に逆コンパイルして読み取ることができるからです。
非常に機密性の高いアプリまたはユーザーデータの場合は、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索好きな目から遠ざけたいデータをより安全に保存する方法です。
私が取り組んでいるプロジェクトで同じ問題に直面しました.AsyncStorageのカスタムラッパーを使用し、いくつかのデータを保存してから、同じデータを取得しようとしました...それはとても簡単でした。
暗号化オプションで Realm を使用することで、この問題を克服しました。AsyncStorageよりも簡単で、速く、優れたソリューションでした。
いいえ、安全ではありません。安全なストレージのために https://github.com/oblador/react-native-keychain のようなライブラリーの使用を検討してください。
Expoを使用している場合は、Expo.SecureStore
キーと値のペアを暗号化し、デバイスにローカルに安全に保存します。ドキュメント: https://docs.expo.io/versions/latest/sdk/securestore
react-native-keychain
を使用して暗号化キーを保存し、CryptoJSを使用してAsyncStorageに保存されているredux-storeを暗号化するredux-persist用の安全なストレージモジュールを作成しました。モジュールは次の場所にあります。
redux-persist-encrypted-async-storage
その使用法は、リンクのreadmeで説明されています。
いいえ、暗号化されていないため安全ではありません。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/
反応ネイティブドキュメントから- https://facebook.github.io/react-native/docs/asyncstorage.html
AsyncStorageは、アプリ全体に適用される、シンプルで暗号化されていない非同期の永続的なキーと値のストレージシステムです。
キーと値のペアを暗号化されていない形式でデバイスに保存するため、安全ではありません。
IOSではキーチェーンを使用し、Androidではデータを安全に保存するためにKeyStoreを使用しました。