Нет, нет простого способа: вы можете запутать вещи столько, сколько хотите, но если пароль открытого текста доступен для приложения в любой момент, не требуя доступа к каким-либо другим ресурсам, кроме собственного исходного кода, могут быть извлечены любым человеком, имеющим доступ к тому же исходному коду.
При использовании протокола, такого как FTP, все упражнение в любом случае бесполезно: любой, кто может загрузить Wireshark, может обнюхать учетные данные с сетевого провода за считанные секунды, если не меньше.
Шаги к правильно решить проблему:
- коммутатора к защищенному протоколу, например, SFTP или FTP + SSL
- Использование аутентификации с открытым ключом вместо пароля (поддержка как SFTP и FTP + SSL это, хотя и несколько по-разному)
- Предоставьте каждому развертыванию программного обеспечения (желательно уникальное, чтобы вы могли обнаруживать учетные данные и отключать скомпрометированные учетные записи) копию закрытого ключа/сертификата, необходимого для входа в систему
- Магазин частный ключ/сертификат наиболее безопасным способом на платформе, на которой вы работаете. В Windows, это означает, что с помощью хранилища сертификатов - см this MSDN Magazine article для хорошего введения
EDIT (после модификации оригинального вопроса): первый абзац моего ответа в равной степени относится к вещам, как пароли баз данных и т.д. решения поскольку эти ситуации становятся еще более специфичными для платформы. Если ваша конкретная комбинация базы данных/любая/ОС не поддерживает безопасные входы в систему, вы не можете многое сделать.
Например: в Windows SQL Server поддерживает аутентификацию NTLM, позволяя вам устанавливать права доступа к базе данных на основе существующих учетных записей Windows, предоставляя вам автоматическое безопасное хранение и передачу паролей, которые относительно сложно обойти. Если аутентификация NTLM не может быть использована, лучшее, что вы можете сделать (как рекомендовано на .NET Framework), - это хранить пароль, зашифрованный с помощью конкретного компьютера, в файле конфигурации. Однако эту «защиту» тривиально обходят с помощью отладчика, так как в какой-то момент требуется пароль незашифрованного текста.
Пароль должен быть доступен каким-то образом, но это не обязательно означает, что одному человеку нужно знать весь пароль. Например, существуют системы, позволяющие одному пользователю узнать первую половину пароля, а другой пользователь может знать вторую половину. – Jim 2008-10-09 20:36:13
Как более общий вопрос, вам не нужно знать пароль для его установки, вам нужно только знать, что это будет. В некоторых случаях имеет смысл получить кого-то с каким-то «административным» доступом (независимо от того, что означает в данной системе) доступ только для записи к паролю. – 2010-10-14 09:06:13