logo
SecurityAndroid

안드로이드 서비스 배포 체크리스트 2편

2024.12.03R&D | June

 

 

안드로이드 앱 개발은 기능 구현뿐만 아니라 보안을 최우선으로 고려해야 하는 복합적인 작업입니다. 이번 글에서는 앱 배포 전에 반드시 검토해야 할 주요 보안 정책을 다루며, 실제 사례를 통해 그 중요성을 설명하겠습니다. 🛡️

 

 


 

 

📂 1. 로그 관리: 배포 전 모든 로그를 제거하세요!

 

 

앱 개발 중 남긴 디버깅 로그는 배포 환경에서는 심각한 보안 위협이 될 수 있습니다. 악성 앱이 로그를 통해 민감한 데이터를 유출하거나 앱의 취약점을 분석할 가능성이 있기 때문입니다. 🕵️‍♂️

 

 

✅ 배포 환경에서 로그 사용의 위험

 

  • 데이터 노출: API 키, 사용자 토큰, 디버깅 메시지 등 민감한 정보가 로그에 기록될 수 있습니다.
  • READ_LOGS 권한 남용: READ_LOGS 권한을 가진 악성 앱이 다른 앱의 로그에 접근 가능.

 

🛠️ 로그 제거를 위한 해결책

 

  1. BuildConfig.DEBUG 활용하기:

     

    배포 빌드에서는 디버깅 로그가 출력되지 않도록 제어할 수 있습니다.

     

    if (BuildConfig.DEBUG) {
        Log.d("Debug", "디버깅 메시지");
    }

     

  2. R8/Proguard 설정으로 로그 자동 제거:

     

     

    테스트용 빌드에서만 로그를 출력하도록 코드를 수정하거나, r8 컴파일러에 아래와 같은 룰을 사용해서 로깅 관련 코드가 최적화되어 제거되도록 할 수 있습니다.

     

     

    -assumenosideeffects class android.util.Log {
        static *** i(...);
        static *** d(...);
        static *** v(...);
        static *** w(...);
        static *** e(...);
    }
    -maximumremovedandroidloglevel 4

 

 


 

 

📌 2. allowBackup 설정: 사용자 데이터 보호의 첫걸음

 

 

안드로이드 앱의 allowBackup 설정은 데이터 백업 및 복원과 관련된 기능을 제공합니다. 하지만 잘못 설정할 경우 치명적인 보안 문제가 발생할 수 있습니다.

 

✅ 왜 중요한가?

 

 

  • allowBackuptrue로 설정하면 앱의 내부 저장소와 SharedPreferences에 저장된 민감한 데이터를 ADB 명령을 통해 추출할 수 있습니다.
  • 사용자 인증 정보, API 키, 비밀번호 등 중요한 데이터가 노출될 위험이 큽니다.

 

✅ 올바른 설정 방법

 

  • 배포 전 필수 확인: AndroidManifest.xml에서 allowBackup을 반드시 false로 설정하세요.
  • 백업 규칙 세부 지정: 데이터 백업이 필요한 경우, 을 명확히 정의하세요.

 

<application
    android:allowBackup="false"
    android:fullBackupContent="false">
</application>

 

 

✨ TIP: 보안이 민감한 앱이라면 기본적으로 allowBackup을 false로 설정하는 것이 안전합니다.

 

 


🔧 3. debuggable 비활성화: 디버깅 악용 차단

 

 

배포 버전의 앱에서 debuggable=true로 설정된 경우, 공격자에게 앱의 내부 로직을 노출하는 셈입니다. 이는 악성 행위를 쉽게 수행할 수 있는 디버깅 취약점으로 이어질 수 있습니다.

 

⚠️ 디버깅 모드의 보안 허점

 

 

  • 앱 코드를 디컴파일하거나 데이터를 실시간으로 분석할 수 있는 환경을 제공합니다.
  • 민감한 데이터를 포함한 네트워크 요청, API 호출 등을 실시간으로 확인할 수 있어 악용될 가능성이 높습니다.

 

✅ 올바른 설정 방법

 

  • 릴리스 빌드 확인 필수: build.gradle 파일의 debuggable 속성을 반드시 false로 설정하세요.
  • 빌드 설정 최적화: Gradle에서 자동으로 디버깅 모드를 비활성화하도록 릴리스 빌드를 분리 관리합니다.

 

android {
    buildTypes {
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

 

주의: 디버깅이 활성화된 상태로 배포되면 Google Play에서 앱이 거절될 수 있습니다.

추천컬럼

추천컬럼 이미지

홈페이지 제작기획, 올바른 사이트 개발 및 리뉴얼

2025.03.18
추천컬럼 이미지

프로그램개발, 합리적인 가격을 위해 잊으면 안되는 MVP

2024.09.20

상담만 받아보셔도 좋습니다 긱다이브의 상담으로 업체 비교를 시작해보세요

CONTACT US