반응형
Flutter 개발시 API Key나 다른 것을 숨겨야 할 상황이 생긴다.
이 때 우리는 환경변수를 사용하여 보안성을 높일 수 있다.
이번에는 .env 파일을 통해 git과 같은 코드 업로드 시 보안을 높이고
또한
앱 배포시에도 리버스 엔지니어링으로 부터 더욱 안전할 수 있게 난독화까지 할 수 있도록 하겠다.
● API Key를 숨기지 않더라도 Naver, AWS 등 여러가지 API 서비스는 제한 횟수로 관리하는 방법이나 단기에 많은 요청시와 같은 비정상적인 호출이 실행되었을 때를 서비스를 제공하는 곳에서 관리해주기 때문에 어느정도 보장되지만, 그럼에도 악용하는 방법은 무궁무진 하므로 보안성을 최대한 높이는 것이 좋다.
● API Key 뿐만 아니라 숨겨야 하는 다른 데이터를 난독화를 통해 보안성을 높일 수 있다.
.env File 사용하기
.env
플러터 프로젝트 루트 디렉터리 (Flutter Project Root Directory)에 .env 파일을 생성하고 key를 적으면 된다.
NAVER_ID_KEY = '발급 받은 키값'
Add Package
난독화와 환경변수 .env file에 적은 값들을 가져오기 위해 다음 패키지를 추가 해 주자.
envied | Dart package
Explicitly reads environment variables into a dart file from a .env file for more security and faster start up times.
pub.dev
pubspec.yaml
$ flutter pub add envied
$ flutter pub add --dev envied_generator
$ flutter pub add --dev build_runner
Code 작성
다음과 같이 .env에 사용했던 상수명을 그대로 작성해주고 obfuscate ( 난독화 )를 true -> 사용해주자
* path에 사용한 .env파일 명을 적어주면 된다.
env.dart
import 'package:envied/envied.dart';
part 'env.g.dart';
@Envied(path: '.env')abstract class Env {@EnviedField(varName: 'NAVER_ID_KEY', obfuscate: true)static final String NAVER_ID_KEY = _Env.NAVER_ID_KEY;
@EnviedField(varName: 'NAVER_SECRET_KEY', obfuscate: true)static final String NAVER_SECRET_KEY = _Env.NAVER_SECRET_KEY;
@EnviedField(varName: 'AWS_API_GATEWAY_URL', obfuscate: true)static final String AWS_API_GATEWAY_URL = _Env.AWS_API_GATEWAY_URL;}
Code 작성 후 터미널에 다음 코드를 작성하면 env.g.dart file이 생성된 것을 확인 할 수 있다.
$ dart run build_runner build
사용은 Dart의 클래스 사용법과 동일하다.
이와 같이 예민한 값들을 .env file과 envied package를 통해 보안성을 높일 수 있다.
반응형