Do.

Swift - gitignore 파일 추가로 중요한 파일 숨기기 본문

iOS

Swift - gitignore 파일 추가로 중요한 파일 숨기기

Hey_Hen 2022. 2. 9. 15:54

 

외부 API를 사용하게 되면서 API KEY값을 git에 올릴 수는 없으니 숨겨야 하는데 구글링을 통해서 찾은 방법을 정리하고자 한다.

 

레퍼런스

1. https://medium.com/swift-india/secure-secrets-in-ios-app-9f66085800b4

2. https://www.raywenderlich.com/books/git-apprentice/v1.1/chapters/5-ignoring-files-in-git

이미지 썸네일 삭제
Git Apprentice, Chapter 5: Ignoring Files in Git

Sometimes, there are things that you really don’t want to store in your source code repository.

www.raywenderlich.com

이미지 썸네일 삭제
Secure Secrets in iOS app

How do we store our secrets on the client side? Are we really vulnerable to attacks? Is it really worthwhile to take the measures to store…

medium.com

 

1.termianl.app 을 사용하여 프로젝트에 gitignore 파일을 등록한다.

2.gitignore에 무시할 파일을 지정한다.

3.숨긴 api key를 앱 내에서 사용한다.

 

1. gitignore 파일 추가하기

우선 xcode를 통해 프로젝트를 생성한다.

깃헙에 리모트를 연결한다. (이 과정은 여기서는 다루지 않겠다.)

termianl을 실행한다.

대표사진 삭제

사진 설명을 입력하세요.

프로젝트의 root 디렉토리로 이동한다.

xcode로 생성한 프로젝트의 root 디렉토리는 위 사진과 같이 프로젝트 명 디렉토리와 .xcodeproj 파일이 있다.

본인의 경우 프로젝트 이름이 'GitIgnoreTedt'이다 (Test라고 쓴건데 오타난거니 신경쓰지 말것)

 

터미널에 아래와 같이 입력한다.

touch .gitignore
vi .gitignore
 

사실 vi .gitignore만 입력해도 파일이 생성된다. 따라서 아래줄만 입력해도 된다.

vi .gitignore
 

2. gitignore 할 파일 등록하기

대표사진 삭제

사진 설명을 입력하세요.

내용은 위와 같다.

*/*.xcconfig
 

라고 썼는데 이는 해당 디렉토리 부터 싹다 xcconfig 확장명을 가진 파일 모두를 ignore 하겠다는 뜻이다. 다른 방법은 글 최상단에 레퍼런스로 언급한 raywenderlich 참조 바란다.

 

:wq 써서 저장하고 나오기

 

이제 xcode로 이동해서 해당 사항을 commit 한다. gitignore 파일을 반드시 체크하고 commit 해야 한다.

만약 gitignore가 표시가 안된다면 다른 파일을 수정하면 생기더라

 

 

3.숨긴 api key 사용하기

api key와 같은 숨긴 파일은 아까 gitignore에 작성한 xcconfig파일을 사용할 것이다.

사진 삭제

사진 설명을 입력하세요.

새 파일을 만들고 config로 검색하면 Configuration Settings File이 보인다. Next

 

사진 삭제

사진 설명을 입력하세요.

이름은 알아서 자유롭게 중요한 것은 Targets 언체크 되어야 한다. 기본은 언체크 더라

 

그렇게 생성한 xcconfig 파일에 아래와 같이 입력한다.

API_KEY = {YOUR API KEY or TOKKEN}
 

이번 건은 실험을 위한 프로젝트 이므로 실제로 API KEY를 입력하지는 않고 그냥 SECRET_DATA라고 하겠다

API_KEY = SECRET_DATA
 

이제 info.plist로 가서 이 친구를 사진 처럼 추가한다.

사진 삭제

사진 설명을 입력하세요.

 

그런 다음 Project APp에서 configuration 등록

사진 삭제

사진 설명을 입력하세요.

 

그런 다음 API를 manage 하는 파일에서

아래와 같이 코드를 작성한다.

struct Manager {
  let apiKey: String
  init() {
    if let keyPath = Bundle.main.infoDictionary?["API_KEY"] as? String {
      apiKey = keyPath
    } else {
      apiKey = ""
    }
  }
}
 

이번 같은 경우는 실험 프로젝트라 Manager 라는 구조체를 생성하고

apiKey String 프로퍼티를 초기화를 통해 생성한다.

 

이를 View에서 아래처럼 써주면 끝

import SwiftUI

struct ContentView: View {
  let manager = Manager()
  var body: some View {
    Text(manager.apiKey)
      .padding()
  }
}

struct ContentView_Previews: PreviewProvider {
  static var previews: some View {
    ContentView()
  }
}
 
사진 삭제

사진 설명을 입력하세요.

 

이제 API키는 xcconfig로 부터 불러오고 git에는 gitignore를 통해 커밋되지 않는다.

 

비교적 쉬운 방법이지만 듣기로는 같이 패키징 되기 때문에 리버스 엔지니어링을 통해 얼마든지 해킹을 당할 수 있다고 한다.더 안전하고 고급 스러운 방법은 아래 링크를 참조하자

https://nshipster.co.kr/secrets/

이미지 썸네일 삭제
애플리케이션의 민감한 정보를 보호하는 방법

“민감한 정보를 기기에 안전하게 저장하는 방법” 은 iOS 개발의 난제 중 하나라고 생각합니다.

nshipster.co.kr

이미지 썸네일 삭제
GitHub - urijan44/GitIgnoreTedt

Contribute to urijan44/GitIgnoreTedt development by creating an account on GitHub.

github.com

 

 

Comments