Phần lớn các ứng dụng iOS hiện nay đều có chứa một vài dữ liệu cần đường bảo mật như API keys, mã hash HMAC hay password. Và cách đơn giản nhất là lưu chúng vào trong một đoạn code nào đó hay vào trong file Info.plist. Tuy nhiên thì rủi ro bị lộ là rất cao, ví dụ như khi bạn push chúng lên Git thì tất cả những key trên sẽ bị lộ ra, khi có một ai đó có quyền truy cập vào repository của bạn.

Thoạt nhìn thì giải pháp có vẻ là đơn giản, bảo mật source code của bạn và đảm bảo không ai có thể truy cập vào nó. Thế nhưng đối với những ứng dụng open-source thì điều này là không ổn, hơn nữa là người dùng hoàn toàn có thể decompile app để tìm ra các key trên. Và để xử lý thì chúng ta có thể loại trừ những file trên và không đẩy chúng lên Git.

Khóa học lập trình di động tại Techmaster:

Để cài đặt MacOSX lên phần cứng không phải Apple liên hệ chuyên gia cài Hackintosh:

  • Nguyễn Minh Sơn: 01287065634
  • Huỳnh Minh Sơn: 0936225565
  • Website: caidatmacos.com

 

xcconfig

Bên cạnh phương pháp trên thì chúng ta có một nơi tối ưu hơn để lưu những giá trị này, đó là file xcconfig tương ứng cho từng môi trường build. Những file này cho phép bạn config build cho từng môi trường một, giảm tối đa công đoạn setup cho lập trình viên và tránh cho việc phải đẩy những key bảo mật lên Git.

Để dễ quản lý và tách biệt thì tôi thường nhét tất cả vào một folder có tên là BuildConfig. Các dev chỉ cần duplicate chúng, rename và add thêm giá trị cần thiết nếu có.

debug.example.xccconfig

API_CLIENT_ID = API_CLIENT_ID_FOR_TEST
API_CLIENT_SECRET = API_CLIENT_SECRET_FOR_TEST

release.example.xccconfig

API_CLIENT_ID = API_CLIENT_ID_FOR_PRODUCTION
API_CLIENT_SECRET = API_CLIENT_SECRET_FOR_PRODUCTION

Khi add những file trên vào trong project thì bạn cần phải remove chúng ra khỏi Target Membership. Và mỗi khi cần thay đổi thì chúng ta chỉ cần sửa giá trị tương ứng cho từng key

API_CLIENT_ID = 123456789
API_CLIENT_SECRET = abcdefgh

 

API_CLIENT_ID = 987654321
API_CLIENT_SECRET = hgfedcba

Và giống như file ví dụ thì chúng ta cũng không cần phải thêm chúng vào trong Target Membership. Sau khi tùy chỉnh xong thì chúng ta thêm vào trong file .gitignore, và select những file này trong Project Configurations settings. Bạn sẽ cần phải chọn những file này ở trong Info → Configurations. 

 

 

 

 

Bất kỳ giá trị nào bên trong file xcconfig sẽ được coi như là các environment variables bên trong project như Info.plist. Nếu bạn muốn sử dụng những value này trong code của mình, bạn sẽ cần phải tạo mọt property trong Info.plist và link tới các environment variables bằng cách dùng form $(API_CONFIG_KEY). 

Khóa học lập trình di động tại Techmaster:

Để cài đặt MacOSX lên phần cứng không phải Apple liên hệ chuyên gia cài Hackintosh:

  • Nguyễn Minh Sơn: 01287065634
  • Huỳnh Minh Sơn: 0936225565