2016-08-25 12 views
24

민감한 데이터를 React Native 앱에 로컬로 저장하려고합니다.React Native의 비동기 스토리지는 안전합니까?

데이터는 작성한 앱에서만 사용할 수 있나요?

+0

이 게시물을보실 수 있습니다 : https://stackoverflow.com/questions/45547657/what-is-the-best-way-to-store-private-data-in-react-native –

답변

4

아니요, AsyncStorage는 중요한 데이터에 대해 안전하지 않습니다. AsyncStorage는 단순히 데이터를 전화기의 하드 드라이브에있는 문서에 저장하기 때문에 전화기의 파일 시스템에 액세스 할 수있는 사람이면 누구나 해당 데이터를 읽을 수 있습니다. 물론 이것이 문제가되는지 여부는 "감정적 데이터"가 무엇을 의미하는지에 달려 있습니다.

적어도 iOS에서는 Apple의 샌드 박스 정책으로 인해 데이터를 작성한 응용 프로그램에서만 데이터를 사용할 수 있습니다. AsyncStorage가 아무 데이터도 암호화하지 않기 때문에 파일 시스템에 대한 루트 액세스 권한을 가진 탈옥 된 iPhone은 원하는대로 가져 오지 않습니다. 하지만 일반적으로 민감한 데이터를 AsyncStorage에 저장하지 마십시오. 동일한 이유로 인해 디 컴파일 및 읽기가 쉽기 때문에 민감한 데이터를 자바 스크립트 코드에 하드 코딩해서는 안됩니다.

+0

그 밖의 다른 게시물 저장 옵션은 iOS에 존재합니까? 사용할 수있는 내부 데이터베이스가 있습니까? –

+0

이 부분에 대한 안내는 https://stackoverflow.com/a/39112472/4637196 –

3

저는 작업중인 프로젝트에서 AsyncStorage 용 사용자 정의 래퍼를 사용하여 데이터를 저장 한 다음 동일한 데이터를 가져 오려고했습니다 ... 너무 쉬웠습니다. .

Realm을 암호화 옵션과 함께 사용하면이 문제를 해결할 수 있으며 AsyncStorage보다 쉽고 빠르며 더 나은 솔루션입니다.

+0

어떻게 Realm 키를 저장 했습니까? 내 믿음은 하드 코딩 된 키 또는 로컬로 저장하는 것이 가능하다는 것입니다. – yogiben

+0

방금 ​​내 정보가 암호화되기를 원했고 일종의 테스트 프로젝트 였으므로 다음과 같이 남겨 두었습니다 : 'let eKey = new Int8Array (64); //'realm = new Realm ({... encryptionKey : eKey}); ' – XaviMorenoM

+1

아마도 일 수 있습니다. 1. 앱이 처음 시작될 때 임의의 키를 생성하십시오. 2. react-native-keychain과 같은 것을 사용하여 네이티브 키 체인에 저장합니다. 3. 응용 프로그램이 시작된 후 키 체인에서 해당 키를 가져옵니다. 4. 키를 사용하여 영역 인스턴스를 가져옵니다. 참고 : 키 체인을 비운 경우에는 영역 데이터베이스를 날려 버려야합니다. – duhseekoh

13

AsyncStorage는 중요한 정보를 저장하는 데 적합하지 않습니다. 다음과 같이 유용 할 수 있습니다 : https://github.com/oblador/react-native-keychain

페이 스북 은폐/안드로이드 키 스토어를 사용하여 암호화 된 데이터를 SharedPreferences (Android) 및 iOS의 키 체인에 저장합니다. (나는이 공동 저작물을 공동 저작했다). 그것이 제공하는 것을 이해하기 위해 전체 readme를 읽으십시오.

+0

안드로이드의 Base64는 안전한 데이터 저장 방법이 아닙니다. – odemolliens

+1

@odemolliens 저장되어있는 base64 _encoded_ 문자열이 이미 암호화되어 있음을 알지 못했을 것입니다. – vonovak

+0

나는 다시 소스 코드를 읽고 당신의 말이 맞습니다. 그러나 이미 암호화 된 경우 Base64로 인코딩 할 때 어떤 이점이 있습니까? 건배 – odemolliens

2

매우 민감한 앱 또는 사용자 데이터의 경우 Android 및 iOS (Android 공유 환경 설정 및 iOS 키 체인 사용)에서 iOS (iOS 키 체인 사용) 또는 https://github.com/classapp/react-native-sensitive-info과 같은 것을 시도 할 수 있습니다.

두 가지 모두 유창한 API와 함께 react-native link과 연결하기가 쉽고 데이터를 보호 할 수있는 안전한 방법입니다. 에서

0

반응 - 기본 문서 - https://facebook.github.io/react-native/docs/asyncstorage.html

AsyncStorage이 응용 프로그램에 전역 간단한 암호화되지 않은 비동기, 지속적, 키 - 값 저장 시스템입니다.

키 - 값 쌍을 암호화되지 않은 형식으로 장치에 저장하므로 안전하지 않습니다.

iOS 용 키 체인과 Android 용 KeyStore를 사용하여 데이터를 안전하게 저장합니다.

관련 문제