앱 개발을 진행하면서 AWS, 카카오 API 등 다양한 서비스를 이용하면서 인증을 위한 여러 키값을 사용해야 하는데 보안을 위해서는 이런 민감정보들은 소스코드에서 분리해 github같은 곳에 노출하지 않아야 한다.
이전에 안드로이드로 앱개발 을 할 때 별 생각 없이 키값을 github에 노출했고 그 순간부터 지옥을 맛볼 수 있었다. github의 모든 히스토리에 남아있는 키값을 전부 삭제하기 전까지는 계속해서 경고 메일이 날라오기 때문이다. 이 글을 읽는 사람들은 그런일이 일어나지 않도록, 보안을 위해서라도 미리미리 민감정보는 노출하지 않도록 주의하자.
이번 글에서는 그런 의미로 flutter에서 민감정보를 숨기는 방법을 알아보자.
flutter에서는 대부분 라이브러리 깔아 진행하니 이번에는 flutter_config 라이브러리를 사용해보겠다.
1. 경로 최상단에 .env 파일 생성
.env 파일은 키값을 관리하는 파일이 될 것이다. key-value 형태로 값을 관리하여 각 코드에서 key값을 통해 값을 가져와서 사용할 수 있다.
2. .gitignore 에 해당 폴더 추가
.env 파일에는 모든 키값들이 적혀있으므로 github에 업로드 되지 않도록 gitignore에 추가하는 것이다. 그러므로 만약 팀원들과 공동으로 개발하고 있다면 각 키 값은 다른 비공개 창구를 통해 공유하도록 한다.
# 키값 보안
.env*
3. 라이브러리 추가
라이브러리는 다음의 두 가지 방법 중 편한 방법으로 추가하면 된다.
- flutter 명령어로 설치
$flutter pub add flutter_config - 직접 pubspec.yaml에 추가
...
flutter_config: ^2.0.2
4. .env 파일에 키값 추가
//KEY='VALUE' 형태
KAKAO_NATIVE_APP_KEY='여러분이 사용하는 그 키값을 여기다 적어요'
5. main.dart에 추가
void main() async {
WidgetsFlutterBinding.ensureInitialized(); // 추가
await FlutterConfig.loadEnvVariables(); // 추가
runApp(const MyApp());
}
6. 사용하고자 하는 곳에서 사용
- AndroitManifest에서 사용하고 싶을 때
- build.gradle(app폴더 하위)
[AndroidManifest에서 쓸 이름 : project.env.get(”.env파일에 적은 키값")]
defaultConfig { ... manifestPlaceholders += [KAKAO_NATIVE_APP_KEY: project.env.get("KAKAO_NATIVE_APP_KEY")] }
- AndroidManifest.xml
${아까 build.gradle에서 지정한 변수명}
- build.gradle(app폴더 하위)
<data android:scheme="kakao${KAKAO_NATIVE_APP_KEY}" android:host="oauth"/>
- dart파일에서 FLutterConfig.get(’.env 파일에서 지정한 키값’)
KakaoSdk.init(nativeAppKey: FlutterConfig.get('appKey'));
이렇게 flutter_config 라이브러리를 사용하여 간단하게 키값을 숨겨보았다.
본인이 오픈된 공간에서 코드를 관리하고 있다면 서버, 프론트 어떤 개발을 하든 DB접속정보, 키값, 서버 주소 등등 여러 민감정보들을 미리미리 반드시 숨기도록 하자!
'별밤 일지 > 개발' 카테고리의 다른 글
[Spring] Spring Scheduler 를 활용한 스케쥴러 만들기 (1) | 2024.10.14 |
---|---|
[SpringBoot] Repository 테스트 하기 (1) | 2024.10.01 |
[Flutter] 우리는 언제 GestureDetector가 필요할까? (2) | 2024.09.23 |
[Flutter] macOS에서 vscode로 flutter 개발환경 구축하기 (0) | 2024.06.10 |
[Java] JsonPath, ObjectMapper (0) | 2024.06.10 |