개발자
Flutter 앱 개발 중인 학생입니다! 제가 판단했을 때는 앱이 어느정도 갖춰진 것 같아서, 출시를 도전하려고 합니다! 보안도 중요한지라, api key같은 중요한 정보는 디컴파일이나 리버스 엔지니어링으로부터 보호해야 한다고 하더라구요! 프로젝트 firebase-options 파일에 API-Key가 포함되어 있어서 보안 목적으로 난독화를 진행하고 싶은데요! 1. proguard 2. flutter build apk --obfuscate --split-debug-info 제가 잘 몰라서 그러는데, 위 두 방법 중 더 효율적인 방법은 무엇인가요?? 아니면 혹시 1. proguard 파일을 작성 후 2. 터미널 명령어를 이용해서 난독화를 진행하는 건가요?? .env 파일을 이용해서 api key를 숨기는 방법도 있던데, 이 방법은 난독화에 비해서는 보안에 취약한가요?? 고수분들의 도움을 받고 싶습니다!!
답변 1
저는 난독화는 자바/코틀린 코드를 위한 Proguard 설정과 Dart 코드를 위한 --obfuscate 빌드 옵션 모두 걸어놓습니다. Proguard 설정은 앱 수준의 build.gradle에서 buildTypes에 따라 설정해놓으시면 flutter build 시 빌드 타입에 따라 자동으로 적용됩니다. API key를 숨기는 방법들로는 1. --dart-define 설정으로 빌드 시 직접 입력 2. .env 파일을 이용하되 envied 라이브러리로 .env파일을 따로 난독화 추가로 Github Actions을 통해 CI/CD를 따로 구현할 수 있으면 Github Secrets에 API Key를 등록해놓고 --dart-define 옵션으로 빌드하는 방법도 있겠네요. 극한의 보안을 추구한다면 저는 --dart-define 옵션이 가장 강력하지 않을까 싶습니다. Reverse Engineering을 극한으로 하게 된다면 난독화도 뚫고 내부 파일을 읽을 수 있다는 이야기가..ㄷㄷ 하지만 매번 빌드 명령어에 --dart-define을 추가해주는게 불편하기 때문에 가벼운 개인 프로젝트라면 .env 파일을 난독화해서 진행하시는걸 추천드립니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 07월 23일
Proguard와 Flutter의 Obfuscate 옵션은 모두 코드 난독화를 위한 좋은 방법입니다. Proguard는 Java/Kotlin을 위한 툴로, 메소드와 클래스 이름을 변경하여 리버스 엔지니어링을 어렵게 만듭니다. 반면에 Flutter의 `--obfuscate` 옵션은 Dart 코드를 난독화합니다. 일반적으로 두 가지 방법을 함께 사용하는 것이 가장 안전합니다. Proguard를 이용하여 Android 관련 Java/Kotlin 코드를 난독화하고, `flutter build apk --obfuscate --split-debug-info` 명령을 사용하여 Dart 코드를 난독화할 수 있습니다. .env 파일을 이용하는 방법도 중요한 보안 단계 중 하나입니다. 하지만 이것만으로 충분하지 않으며, 이것은 API 키 같은 민감정보를 소스코드에서 분리하고 관리하기 위한 처음 단계일 뿐입니다. 따라서 궁극적으로는 .env 파일과 함께 Proguard와 Flutter의 Obfuscation을 사용해야 최상의 보안성을 제공할 수 있습니다. 다만, 개발 과정에서 추가로 복잡성이 증가할 수 있으므로 상황에 따라 적절히 판단하시기 바랍니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!