개인 혹은 기업에서 사용되는 api key는 외부로 노출이 되면 안된다.
악용될 수 있을 뿐더러 회사의 api key를 깃허브에 push를 하여 외부에 노출되어 손해가 발생해 소송이 걸린 사건도 있다고 한다
이처럼 중요한 api key를 숨기는 방법은 여러가지 있지만 오늘은 plist를 활용해 api key를 숨기는 방법에 대해 작성해보려고 한다
이름은 AppPrivaceInfo라고 지어줬다
나 같은 경우에는 API_KEY
라고 프로퍼티를 만들고 그 내용에는 api key를 넣어달라는 문구를 만들어 놓았다
import Foundation
extension Bundle {
var apiKey: String {
guard let filePath = self.path(forResource: "AppPrivacyInfo", ofType: "plist") else {
return ""
}
guard let resouce = NSDictionary(contentsOfFile: filePath) else {
return ""
}
guard let apiKey = resouce["API_KEY"] as? String else{
fatalError("API KEY를 확인해 주세요")
}
return apiKey
}
}
Bundle extension을 통해 apiKey라는 API_KEY의 value를 반환하는 메서드를 만들었고 여기까지 한 뒤 프로젝트를 커밋(혹은 푸쉬) 해준다
2번까지 한 뒤 푸쉬를 하였으면 이제부터는 plist에 실 api key를 넣고 사용해도 되는데 여전히 커밋이나 푸쉬를 하면 안된다
그럴 때 skip worktree를 사용 할 수 있다
스킵하기
스킵하지 않기
스킵된 목록 보기
위 터미널에서 프로젝트 파일로 들어가 실행해주면 된다
요런 식으로!
물론 커밋할 때 마다 해당 plist파일만 빼고 커밋을 하면 되지만 여간 귀찮은 일이 아니기 때문에 이렇게 한 번 설정해주면 신경쓰지 않을 수 있다
(단 다른 브랜치와 머지할 때 다시 스킵을 해제하고 변경사항을 없애준 뒤 머지 해야하는 불편함은 있다)
API_KEY 프로퍼티에 실 api키를 입력하고
위와 같이 간단하게 사용할 수 있다