“android : allowBackup”이란 무엇입니까?


267

이후 새로운 ADT 미리보기 버전 (버전 21) , 그들은 (응용 프로그램 태그) 나에게 매니페스트 파일에서 다음 일을 알려주는 새로운 보풀이 경고를 가지고 :

android : allowBackup을 명시 적으로 true 또는 false로 설정해야합니다 (기본적으로 true이며 응용 프로그램 데이터에 보안 영향을 미칠 수 있음)

에서 공식 웹 사이트 , 그들은 서면으로 작성했습니다 :

몇 가지 새로운 확인 : 앱에서 백업을 허용할지 여부와 라벨 확인을 명시 적으로 결정해야합니다. 라이브러리 경로를 설정하기위한 새로운 명령 행 플래그가 있습니다. 편집하는 동안 증분 보푸라기 분석이 많이 개선되었습니다.

이 경고는 무엇입니까? 백업 기능은 무엇이며 어떻게 사용합니까?

또한 왜 경고가 보안에 영향을 준다고 알려줍니까? 이 기능을 비활성화하면 어떤 장단점이 있습니까?


매니페스트 백업에는 두 가지 개념이 있습니다.

  • "android : allowBackup "은 다음과 같이 adb를 통해 백업 및 복원 할 수 있습니다 .

애플리케이션이 백업 및 복원 인프라에 참여할 수 있는지 여부 이 속성을 false로 설정하면 전체 시스템 백업으로도 응용 프로그램의 백업 또는 복원이 수행되지 않으며, 그렇지 않으면 모든 응용 프로그램 데이터가 adb를 통해 저장됩니다. 이 속성의 기본값은 true입니다.

사람들이 ADB 를 통해 앱을 백업 한 다음 앱의 개인 데이터를 PC로 가져올 수 있기 때문에 이는 보안 문제로 간주됩니다 .

그러나 대부분의 사용자는 adb가 무엇인지 알지 못하고 장치를 루팅하는 방법도 알기 때문에 문제가 아니라고 생각합니다. ADB 기능은 장치에 디버깅 기능이 활성화 된 경우에만 작동하며이를 활성화하려면 사용자가 필요합니다.

따라서 장치를 PC에 연결하고 디버깅 기능을 활성화 한 사용자 만 영향을받습니다. PC에 ADB 도구를 사용하는 악성 앱이있는 경우 앱이 개인 스토리지 데이터를 읽을 수 있기 때문에 문제가 될 수 있습니다.

ADB를 통해 앱을 백업 및 복원 할 수 있도록 개발자 카테고리에서 기본적으로 사용 중지 된 기능을 추가해야한다고 생각합니다.

  • "android : backupAgent "를 사용하면 다음 과 같이 클라우드의 백업 및 복원 기능을 사용할 수 있습니다 .

응용 프로그램의 백업 에이전트 인 BackupAgent의 하위 클래스 인 클래스의 이름입니다. 속성 값은 정규화 된 클래스 이름 (예 : "com.example.project.MyBackupAgent")이어야합니다. 그러나 간단히 말해서 이름의 첫 문자가 마침표 (예 : ".MyBackupAgent")이면 요소에 지정된 패키지 이름에 추가됩니다. 기본값은 없습니다. 이름을 지정해야합니다.

이것은 보안 문제가 아닙니다.


Tor Norbye의 답변에 따라이 문제가 실제로 참조하고있는 ADB 백업 도구 대신 백업 클라우드 서비스를 참조하고 있기 때문에 편집에서 추가 정보를 제거해야한다고 생각합니다.
Tony Chan

@ 터보 네 맞습니다. 나는 그것을 읽었을 때 이것이 많이 업데이트되지 않았다고 생각하지만, 지금은 분명합니다. 질문을 업데이트하겠습니다. 감사. 루팅 된 장치에서 adb 백업 기능을 false로 설정 한 응용 프로그램에서도 사용할 수 있는지 궁금합니다.
안드로이드 개발자

2
@ IgorGanapolsky 그래서 지금 완전히 혼란 스럽습니다. 왜 완전히 다른 두 가지 기능으로 언급 했습니까? 동일한 플래그가 두 기능 모두를 담당 할 수 있습니까? 아니면 실수 일까? 내가 체크 한 답변을 선택 해제해야한다고 생각하십니까?
안드로이드 개발자

1
@androiddeveloper 두 기능 모두에 동일한 속성이 존재하는 이유는 아마도 데이터 백업과 같은 궁극적 인 목적을위한 것이기 때문일 것입니다. 장치 또는 클라우드 여부 ...
IgorGanapolsky

3
안드로이드 사용자 로서 나는 이것을 찾는 사람에게 무게를 달고 백업을 비활성화하는 앱을 견딜 수 없으며 많은 앱이 있다고 말하고 싶습니다. 사람이 잠금 해제 된 전화기에 액세스 할 수 있으면 전화기에서 데이터를 복사 할 수 있어야합니다. 이 시점에서 "보안"측정은 의미가 없습니다. 데이터를 얻기 위해 항상 전화를 루팅 할 수 있기 때문입니다. 그러나 사용자는 내 Knox 비트를 루팅하거나 트립하지 않고 내 앱 데이터를 백업 할 수 있다는 것이 매우 중요합니다. 너무 많은 앱이 허용하지 않는 것이 정말 실망 스럽습니다. 솔직히 안드로이드 에도이 스위치가 있습니다.
Nathan Stretch

답변:


139

다른 보푸라기 경고와 마찬가지로이 보푸라기 경고의 경우 한 줄 오류 메시지에있는 것보다 더 자세한 설명을 얻을 수 있습니다. 더 많은 정보를 얻기 위해 웹을 검색 할 필요는 없습니다.

Eclipse를 통해 lint를 사용하는 경우, lint warnings보기를 열어 lint 오류를 선택하고 더 자세한 설명을 보거나 오류 행에서 빠른 수정 (Ctrl-1)을 호출하십시오. 제안 중 하나는 " "이 문제를 설명하십시오"를 참조하십시오. 자세한 설명이 나타납니다. Eclipse를 사용하지 않는 경우 lint --html <filename>경고 옆에 전체 설명이 포함 된 lint ( ) 에서 HTML 보고서를 생성 하거나 lint에게 특정 문제를 설명하도록 요청할 수 있습니다. 예를 들어, 관련된 문제 allowBackup에는 id AllowBackup(오류 메시지 끝에 표시됨)가 있으므로 자세한 설명은 다음과 같습니다.

$ ./lint --show AllowBackup
AllowBackup
-----------
Summary: Ensure that allowBackup is explicitly set in the application's
manifest

Priority: 3 / 10
Severity: Warning
Category: Security

allowBackup속성은 여기에 설명 된대로 애플리케이션 데이터를 백업 및 복원 할 수 있는지 여부를 결정합니다 .

기본적으로이 플래그는로 설정되어 true있습니다. 이 플래그가 설정되면 true, 애플리케이션 데이터 백업 및 사용하여 사용자에 의해 복원 될 수 adb backupadb restore.

이것은 응용 프로그램에 보안 결과를 초래할 수 있습니다. adb backupUSB 디버깅을 활성화 한 사용자가 장치에서 응용 프로그램 데이터를 복사 할 수 있습니다. 백업되면 사용자가 모든 응용 프로그램 데이터를 읽을 수 있습니다. adb restore사용자가 지정한 소스에서 응용 프로그램 데이터를 만들 수 있습니다. 복원 후 응용 프로그램은 응용 프로그램 자체에서 데이터, 파일 권한 및 디렉터리 권한을 생성했다고 가정해서는 안됩니다.

설정 allowBackup="false"은 백업과 복원 모두에서 응용 프로그램을 선택합니다.

이 경고를 해결하려면 애플리케이션이 백업을 지원해야하는지 명시 적으로 설정해야하는지 결정하십시오. android:allowBackup=(true|false)

자세한 내용은 여기를 클릭하십시오


35
사용자는 보통 adb가 무엇인지 모르고 있으며, 그렇다면 장치를 루팅하고 데이터를 스스로 가져 오는 방법을 알고있을 것입니다.
안드로이드 개발자

1
@Tor "장치에서 응용 프로그램 데이터 복사"라고 말하면 data / data / com.myapp 또는 sdcard에서 복사 했습니까? 이전 디렉토리는 보호되며 장치가 루팅되지 않으면 읽을 수 없습니다.
IgorGanapolsky

2
따라서 Lint가 참조하는이 백업은 클라우드 백업 서비스가 아닌 ADB 도구입니다. 맞습니까? 다른 많은 답변이 혼란스러워하는 것 같습니다.
Tony Chan

1
@ IgorGanapolsky 나는 ADB를 사용하면 개인 데이터를 복사 할 것이라고 생각하므로 경고가 발생합니다. 디버깅 기능을 사용하고 장치를 PC에 연결 한 사람 만 영향을받는다고 생각합니다. 이러한 사람들은 일반적으로 고급 사용자 또는 개발자이므로 자신이하는 일을 알아야합니다. 보안 위험은 실수로 위험을 감수하고 ADB 도구를 사용하여 이러한 작업을 수행하는 악성 앱을 PC에 설치 한 사람들에게 있습니다. "헬륨"이라는 루트가없는 백업 및 복원을위한 앱이 있습니다 : play.google.com/store/apps/…
android 개발자

"Eclipse를 통해 lint를 사용하는 경우"ADT 플러그인이 더 이상 사용되지 않으므로 AndroidStudio로 마이그레이션해야합니다.
throws_exceptions_at_you

26

이러한 의미에서 백업이 실제로 의미하는 것은 다음과 같습니다.

Android의 백업 서비스를 사용하면 애플리케이션 데이터 및 설정에 대한 복원 지점을 제공하기 위해 지속적 애플리케이션 데이터를 원격 "클라우드"스토리지에 복사 할 수 있습니다. 사용자가 공장 초기화를 수행하거나 새로운 Android 구동 장치로 변환하면 응용 프로그램을 다시 설치할 때 시스템에서 백업 데이터를 자동으로 복원합니다. 이러한 방식으로 사용자는 이전 데이터 또는 응용 프로그램 설정을 재현 할 필요가 없습니다.

~ http : //developer.android.com/guide/topics/data/backup.html 에서 가져옴

https://developer.android.com/google/backup/signup.html 에서이 백업 서비스에 개발자로 등록 할 수 있습니다.

백업 할 수있는 데이터 유형은 파일, 데이터베이스, sharedPreferences, 캐시 및 lib입니다. 이들은 일반적으로 장치의 /data/data/[com.myapp] 디렉토리에 저장되며,이 디렉토리는 읽기 방지되며 루트 권한이 없으면 액세스 할 수 없습니다.

업데이트 :이 플래그는 BackupManager의 API 문서에 나와 있습니다. BackupManager


4
API 레벨 23의 변경 사항이 이것이 정답이라고 지적합니다. 다음은 변경 사항에 대한 교육 문서입니다. developer.android.com/training/backup/autosyncapi.html
pumpkinpie65

8

이것은 명시 적으로 언급되지는 않았지만 다음 문서를 기반으로 allowBackup이 true로 설정된 경우에도 데이터 백업이 작동하려면 앱이 BackupAgent를 선언하고 구현해야 함을 암시합니다. 기본값).

http://developer.android.com/reference/android/R.attr.html#allowBackup http://developer.android.com/reference/android/app/backup/BackupManager.html http://developer.android. com / guide / topics / data / backup.html


앱에 backupAgent와 관련이없는 경우 어떻게합니까? 그럼에도 불구하고 안드로이드는 자동으로 데이터를 백업합니까?
안드로이드 개발자

1
정답은 여기에서 찾을 수 있습니다 : stackoverflow.com/a/13806946/878126 . backupAgent와 관련이없는 것 같습니다. 또한 내 질문을 업데이트하여 모든 내용을 보여줍니다.
안드로이드 개발자

3

그것은는 개인 정보 보호 문제. 민감한 데이터가 포함 된 앱을 사용자가 백업하지 못하게하는 것이 좋습니다. 백업 파일에 액세스 할 수있는 경우 (예 :) android:allowBackup="true", 루팅되지 않은 기기에서도 앱의 내용을 수정 / 읽을 수 있습니다.

해결책- android:allowBackup="false"매니페스트 파일에서 사용 하십시오.

자세한 내용은 다음 게시물을 참조하십시오. 백업 기술을 사용하여 Android 앱 해킹


1
2017 년에이 답변이 진지합니까? 여기에서 읽으십시오 developer.android.com/guide/topics/data/…
batmaci

android : allowBackup을 false로 설정하여 백업을 비활성화 할 수 있습니다. 앱이 다른 메커니즘을 통해 상태를 다시 만들 수 있거나 앱이 Android가 백업해서는 안되는 민감한 정보를 처리하는 경우이 작업을 수행 할 수 있습니다.
Edgar Khimich

현재 매니페스트의 속성을 통해 중요한 데이터를 백업에서 제외 할 수 있습니다.
Yousha Aleayoub
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.