공유 기본 설정 보안에 대해 궁금합니다.
공유 기본 설정이 MODE_PRIV (0)에서 생성 된 경우에도 액세스 할 수 있습니까?
사용 가능한 모든 공유 환경 설정을 나열한 다음 다른 앱에서 모든 설정을 가져올 수 있습니까?
sharedpreferences는 비밀번호 또는 인증 토큰과 같은 민감한 데이터를 저장하기에 좋은 장소입니까?
감사
공유 기본 설정 보안에 대해 궁금합니다.
공유 기본 설정이 MODE_PRIV (0)에서 생성 된 경우에도 액세스 할 수 있습니까?
사용 가능한 모든 공유 환경 설정을 나열한 다음 다른 앱에서 모든 설정을 가져올 수 있습니까?
sharedpreferences는 비밀번호 또는 인증 토큰과 같은 민감한 데이터를 저장하기에 좋은 장소입니까?
감사
답변:
공유 기본 설정은 장치의 파일 시스템에 파일로 저장됩니다. 기본적으로 특정 애플리케이션이 실행하는 UID 만 액세스 할 수 있도록 허용하는 파일 시스템 권한 세트와 함께 앱의 데이터 디렉토리에 저장됩니다. 따라서 Linux / Unix 시스템에서와 마찬가지로 Linux 파일 권한이 액세스를 제한하는만큼 비공개입니다.
루트가 파일 시스템의 모든 것에 액세스 할 수 있기 때문에 장치에 대한 루트 수준 액세스 권한이있는 사람은 누구나 볼 수 있습니다. 또한 생성 앱과 동일한 UID로 실행되는 모든 애플리케이션이 액세스 할 수 있습니다 (일반적으로 수행되지 않으며 두 앱이 동일한 UID로 실행되도록하려면 특정 작업을 수행해야하므로 크지 않을 것입니다.) 관심사). 마지막으로 누군가 설치된 Android OS를 사용하지 않고 기기의 파일 시스템을 마운트 할 수 있다면 액세스를 제한하는 권한을 우회 할 수도 있습니다.
기본 설정 (또는 응용 프로그램에서 작성한 데이터)에 대한 이러한 액세스가 염려되는 경우 암호화하는 것이 좋습니다. 당신이 그들에 대해 그렇게 염려한다면, 당신이 보는 위험 수준에 대해 얼마나 많은 보호가 필요한지 정확히 알아 내야 할 것입니다. 2011 년 12 월에 출판 된 Android 플랫폼 용 애플리케이션 보안 에서 이에 대한 매우 광범위한 논의가 있습니다 (면책 조항 :이 책의 저자입니다).
SharedPreferences는 전화기 / data / data / 폴더의 XML 파일 일 뿐이므로, 루트 장치에서 수퍼 유저 권한을 가진 모든 응용 프로그램이나 사용자는 MODE_PRIV로 생성 된 경우에도 SharedPreferences에 액세스 할 수 있습니다.
여전히 모든 사람으로부터 보호 할 수있는 방법 이 있습니다 ...이 링크를 확인하세요. 여기에서 암호화를 사용하여 데이터를 pref에 저장할 수 있으며 클래스는 설명이 필요 없으며 사용하기 매우 쉽습니다.
https://github.com/sveinungkb/encrypted-userprefs
다른 사람들이 말했듯이 누구나 액세스 할 수 있지만이 경우 암호화 된 데이터를 읽을 수 없습니다. 그 secure.For 그래서 최대한도 보안 나의 제안은 실행 시간보다는 열심히 코딩에서 암호화에 사용되는 키를 생성하는 것입니다. 이를 수행하는 방법에는 여러 가지가 있습니다. :)
SharedPref
. 하지만 다른 키로 무엇을할까요? 하지만 가장 좋은 시나리오는 SSL을 사용하여 암호화 된 키와 장치 UID를 서버에 보내 저장하고 필요에 따라 검색하는 것입니다. 연결이 필요하지만 장치를 블랙리스트에 추가하고 갑자기 모든 데이터를 폐기 할 수 있습니다. 지속적인 인터넷 연결 없이는 데이터 암호화 시도가 100 % 안전하지 않습니다.
공유 기본 설정이 MODE_PRIV (0)에서 생성 된 경우에도 액세스 할 수 있습니까?
코드 번호로. 그러나 수퍼 유저 권한이있는 경우 응용 프로그램 파일을 검색 할 수 있습니다.
사용 가능한 모든 공유 환경 설정을 나열한 다음 다른 앱에서 모든 설정을 가져올 수 있습니까?
슈퍼 유저 (루팅 된 기기) 인 경우 앱의 모든 비공개 파일을 가져올 수 있습니다.
sharedpreferences는 비밀번호 또는 인증 토큰과 같은 민감한 데이터를 저장하기에 좋은 장소입니까?
아니요. 쉽게 해킹 할 수 있습니다. 중요한 데이터를 공유 우선 순위 파일에 넣으려면 데이터를 암호화하고 저장할 수 있습니다. NDK / 서버에 암호화 키를 저장할 수 있습니다.