Ý tưởng cơ bản là bạn KHÔNG đăng ký các giá trị bí mật trong mã hoặc trong tệp nhị phân được biên dịch. Đặc biệt nếu dự án là nguồn mở, bạn thực sự không nên. Có một số chiến lược cấu hình bạn có thể thực hiện để làm như vậy:
Giữ chỗ trong mã (giá trị mã hóa cứng)
Trình giữ chỗ trong mã - như đã được đề xuất - điều này lành mạnh nhất và dễ thực hiện nhất trong các ngôn ngữ lập trình động vì mã rất dễ thay đổi (không cần phải biên dịch). Tôi đã thấy rất nhiều dự án nguồn mở thực hiện điều này như MediaWiki với nó LocalSettings.php
.
Các nhược điểm với chiến lược này là chìa khóa là hardcoded. Vì vậy, nếu chương trình được phân phối dưới dạng nhị phân thì việc mã hóa khóa cứng không làm cho nó đặc biệt duy trì được.
Cấu hình tập tin văn bản
Bạn cũng có thể làm điều này bằng cách thực hiện các tệp văn bản cấu hình , tức là chương trình / ứng dụng tìm kiếm tệp cấu hình và đọc các giá trị từ nó. Bạn có thể đăng ký cấu hình mẫu với trình giữ chỗ nhưng có cấu hình thực tế cục bộ trong máy của bạn.
Trong trường hợp của bạn, bạn có thể tạo một key.conf
tệp văn bản bằng khóa thực tế, hãy để chương trình sử dụng tệp đó và để nó bị bỏ qua bởi kiểm soát phiên bản. Bạn có thể, vì hữu ích, hãy kiểm tra key.conf.example
tệp văn bản bằng khóa không có thật và kiểm tra xem. Đảm bảo chương trình / ứng dụng của bạn tạo thông báo lỗi hữu ích cho người dùng để thêm khóa thực tế vào đúng tệp.
Một số ngôn ngữ lập trình có API cung cấp điều này tự động cho bạn, chẳng hạn như:
Nếu ứng dụng của bạn là một ứng dụng cơ sở dữ liệu, thì hãy xem xét đưa khóa hoặc các biến cấu hình khác vào cơ sở dữ liệu. Nó giống như tệp văn bản cấu hình ở trên nhưng bạn đặt tất cả các biến cấu hình như khóa trong bảng cơ sở dữ liệu thay thế.
Thông qua chế độ xem tùy chọn hoặc ứng dụng Back Office
Nếu chương trình là một cửa sổ hoặc một ứng dụng web có chế độ xem thì bạn cũng có thể để ứng dụng tạo tệp cấu hình, thông qua chế độ xem tùy chọn sắp xếp. Bằng cách đó, bạn không cần phải kiểm tra tệp cấu hình ví dụ như được đề xuất ở trên.
MediaWiki đã giải quyết vấn đề này tương tự bằng cách tự động tạo LocalSettings.php
tệp trong quy trình cài đặt ban đầu.
Phải thừa nhận rằng đây không phải là một tùy chọn cho các chương trình chỉ chạy dưới dạng tiến trình nền, dịch vụ hoặc trình nền. Tuy nhiên, đó là lý do tại sao bạn tạo các dự án GUI riêng biệt cho các dự án này để tạo điểm truy cập cho cài đặt quản trị và tùy chọn, trong các ứng dụng web thường được gọi là ứng dụng Back Office .