Основная идея заключается в том, что вы НЕ регистрируете конфиденциальные значения в коде или в скомпилированном двоичном файле. Особенно, если проект с открытым исходным кодом, вы действительно не должны. Есть несколько стратегий конфигурации, которые вы можете использовать для этого:
Заполнители в коде (жестко закодированные значения)
Заполнители в коде - как было предложено - что наиболее разумно и проще всего сделать в динамических языках программирования, так как код легко изменить (без необходимости компиляции). Я видел много проектов с открытым исходным кодом, таких как MediaWiki с этим LocalSettings.php.
Недостаток этой стратегии является то , что ключ зашит. Таким образом, если программа распространяется в виде двоичного файла, то жестко закодированный ключ не делает ее особенно удобной для сопровождения.
Конфигурационные текстовые файлы
Вы также можете сделать это путем реализации текстовых файлов конфигурации , то есть программа / приложение ищет файл конфигурации и считывает значения из него. Вы можете зарегистрировать пример конфигурации с заполнителями, но фактическая конфигурация будет локальной на вашем компьютере.
В вашем случае вы можете создать key.confтекстовый файл с фактическим ключом, позволить программе использовать этот файл и позволить ему игнорировать управление версиями. Для удобства вы можете проверить key.conf.exampleтекстовый файл с помощью фиктивной клавиши и проверить это. Убедитесь, что ваша программа / приложение делает полезное сообщение об ошибке для пользователя, чтобы добавить фактический ключ в правильный файл.
Некоторые языки программирования имеют API, которые предоставляют это автоматически, например:
Если ваше приложение является приложением базы данных, рассмотрите возможность помещения ключа или других переменных конфигурации в базу данных. Он такой же, как текстовый файл конфигурации выше, но вместо этого вы помещаете все переменные конфигурации, такие как ключ, в таблицу базы данных.
Через просмотр настроек или приложение бэк-офиса
Если программа является окном или веб-приложением с представлениями, вы также можете разрешить приложению создавать файл конфигурации с помощью вида предпочтений. Таким образом, вам не нужно проверять пример файла конфигурации, как предложено выше.
MediaWiki решает эту проблему аналогичным образом, автоматически генерируя LocalSettings.phpфайл в процессе первоначальной установки.
По общему признанию, это не вариант для программ, которые работают исключительно как фоновые процессы, сервисы или демоны. Однако именно поэтому вы создаете отдельные проекты с графическим интерфейсом для них, чтобы создать точку входа для настроек администрирования и настроек, в веб-приложениях, обычно называемых приложением Back Office .