AsyncStorage에 저장되지만, 루팅된 디바이스에서는 쉽게 접근할 수 있어 탈취 위험이 있습니다아래 코드는 AsyncStorage와 SecureStore를 비교하여 루팅된 디바이스에서의 보안 차이를 학습할 수 있도록 구성된 예제입니다.
import { useEffect } from "react";
import AsyncStorage from "@react-native-async-storage/async-storage";
import * as SecureStore from "expo-secure-store";
export default function 나의시작화면() {
useEffect(() => {
// 1. AsyncStorage에 저장하기 => 루팅 시 탈취 가능
AsyncStorage.setItem("accessToken", "12341234");
// 2. SecureStore에 저장하기 => 루팅 시 탈취되어도 암호화되어 있음
// 2-1) 안드로이드: SharedPreferences 저장소(Keystore로 암호화하여 저장됨)
// 2-2) iOS: Keychain 저장소(Keychain으로 암호화하여 저장됨)
SecureStore.setItemAsync("accessToken", "3645363643643");
}, []);
return null;
}
brew 패키지를 설치해줍니다.(https://brew.sh/ko/)
brew install android-platform-tools 이 명령어를 사용하여 adb 명령어를 사용할 수 있게 세팅해줍니다.
에뮬리에터 실행 시, 기기는 Google Play Store가 없는 기기를 선택하셔야 합니다.(보안 약함)

cold boot 모드로 실행합니다.