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에 적은 값들을 가져오기 위해 다음 패키지를 추가 해 주자.
log('Request failed with status: ${response.statusCode}.');
}
}
통신의 결과 log를 확인해보자
결과
[log] Request failed with status: 401.
... ??
Flutter Code로 실행한 결과 권한이 없음 이였다. 하지만 이는 domain과 params가 잘못된 경우도 포함되므로 다음과 같은 시도를 하였다. ( javascript로 추가 검증시에 발견 )
1. url = https://dapi.kakao.com/v2/local/search/keyword 2. parms를 필수 param인 query만 두고 작성 3. --data-urlencode를 위한 Uri.encodeComponent(keyword) 4. Kakao문서의 SDK 추가 5. 네이트비 앱 키 등록 6. Admin 키 사용 7. 보낸 domain, header, params 재 확인 ( 텍스트 비교기로 확인 )
( 혹시나 RestApi + Flutter http 로 되는 사람이 있으면 댓글 부탁드립니다. )
때문에 이 코드를 JavaScript로 변환시켜 Node.js로 실행시켜보니 200(Ok)의 결과와 함께 데이터가 왔다..