認証情報などハードコーディング・GithubにPushすべきでない情報を管理する
こんにちは、セキュリティは大事だとわかってるけど悪い人ってほんとに常に悪いことを考えてるから対策しきれないですよね、と思っちゃうTamaです。
例えばですが、Githubのリポジトリを公開設定にしていてその中にパスワードの情報やAPIのキー (私が今使っているのはGoogle CloudのサービスのAPI)などが含まれていると、その情報を使って悪いことを企んでる人はほんとなんでもしちゃいます。
今回はXcode/Swiftにおいてそのようなセンシティブな情報を守り、セキュリティ対策をするかを記載します。
別ファイルに認証情報を記載する
新しい.plist ファイルを作成し「config.plist」などと命名する
作成したら以下のようにKeyとValueを設定し、Valueの部分に認証情報を記載する
Gitignoreファイルを設定する
Gitignoreファイルに以下のように作成したファイル名を追加する
gitignoreファイルの詳細についてはこちら
Config.plist
認証情報をハードコーディングしていたファイルを修正する
APIを入れていた部分を以下のように書き換えます
もしなんらかの理由でAPIキーが見つからない場合はエラーが表示されるようになっています
今回はAPIキーがGoogleMapとGooglePlacesで同じなので、apikeyはGoogleMapsAPIKeyのものを両方に使うような形になっています
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Attempt to load the API key from Config.plist
if let path = Bundle.main.path(forResource: "Config", ofType: "plist"),
let config = NSDictionary(contentsOfFile: path),
let apiKey = config["GoogleMapsAPIKey"] as? String, !apiKey.isEmpty {
// Provide API Key to Google Maps and Places SDK
GMSServices.provideAPIKey(apiKey)
GMSPlacesClient.provideAPIKey(apiKey)
print("Google Maps API Key Loaded Successfully!")
} else {
print("Failed to load Google Maps API Key. Check Config.plist.")
}
return true
}
Pushするときは認証情報のある「Config.plist」を誤ってPushしないように気をつけてください!!
同じ方法でパスワードなど他の認証情報も対応できそうです!