Первый совет: никогда не храните конфиденциальные данные непосредственно в коде. Вы всегда можете перепроектировать это, как бы искусно вы ни пытались это запутать.
Я читал о таких вещах, как разбиение пароля на несколько частей, размещение их в разных местах кода и запуск их через ряд функций, прежде чем, наконец, использовать их... хотя это усложняет задачу, вы все равно всегда можете контролировать приложение. используя отладчик, и в конечном итоге вы сможете получить секретную информацию.
Если я правильно интерпретирую ваш сценарий, у вас есть код, который должен быть развернут в помещении некоторого клиента, и ваш код подключен к базе данных (которая, я полагаю, также находится под контролем клиента), для подключения к ней требуется пароль. Этот пароль известен этому клиенту, поэтому пытаться скрыть его от клиента довольно бесполезно. Что вы делаете, так это ограничиваете доступ к этому паролю всем, кто не должен его знать.
Обычно вы достигаете этого, помещая конфиденциальную информацию в отдельный файл в папке, которая должна иметь очень ограничительные разрешения, только приложение и несколько избранных людей должны иметь доступ. Затем приложение будет получать доступ к информации, когда это необходимо во время выполнения.
Кроме того, шифрование отдельного файла оказывается проблемой - если вы это сделаете, тогда задействован ключ, который снова должен быть каким-то образом защищен - бесконечная рекурсия на подходе :) Защитить доступ к файлу часто бывает достаточно, но если вам действительно нужно быть как можно более безопасным, тогда решение состоит в том, чтобы использовать шифрование на основе пароля для файла. Но идея здесь не в том, чтобы хранить пароль в другом месте в системе, а в виде внеполосной информации (например, в физическом хранилище) и вводить пароль при запуске приложения. Здесь тоже есть свои проблемы: для (повторного) запуска приложения требуется физическое присутствие человека, а пароль все равно можно получить из оперативной памяти машины, на которой запущено приложение. Но это, вероятно, лучшее, что вы можете сделать без специального оборудования.
Другой хорошей альтернативой шифрованию на основе паролей может быть использование «хранилищ паролей» для конкретных ОС, таких как Windows. Изолированное хранилище — это своего рода компромисс между полным отсутствием шифрования и сохранением пароля вне диапазона.
person
emboss
schedule
21.10.2011