Запретить программистам знать пароли, используемые во время выполнения - PullRequest
11 голосов
/ 09 октября 2008

Мое приложение подключается к FTP-серверу с именем пользователя и паролем. Я могу создать процедуру шифрования для шифрования и дешифрования пароля, но любой, кто имеет доступ к исходному коду и зашифрованному паролю, может расшифровать пароль.

Существует ли простой способ не дать каждому человеку узнать весь пароль, используемый приложением? (Я думаю, что это нормально, если несколько человек знают часть пароля.)

РЕДАКТИРОВАТЬ: я знаю, что FTP не является безопасным. В идеале мне бы хотелось, чтобы техника работала в любой ситуации, когда требуются имя пользователя и пароль (например, соединение с базой данных).

Ответы [ 15 ]

0 голосов
/ 09 октября 2008

Один из способов сделать это - разместить приложение на сервере. Если пароль хранится в ограниченной области сервера, то те, кто использует приложение, не будут иметь к нему доступа. Фактически, они не будут иметь доступа к приложению, кроме как через предоставленный интерфейс. Это одна из причин, почему веб-приложения становятся такими популярными.

В этом конкретном случае, когда им по-прежнему доступен исходный код, вам просто нужно убедиться, что пароль хранится не с исходным кодом, а только на защищенном сервере и доступен только для учетной записи, которая его размещает приложение на сервере.

0 голосов
/ 09 октября 2008

Какой бы тип шифрования вы ни использовали, пароль должен быть зашифрован, прежде чем ваше приложение сможет подключиться к ftp. Любой пользователь может запустить ваше приложение в отладчике, проследить до этой точки и затем выбрать пароль из памяти. Таким образом, полная безопасность для вашего сценария невозможна.

При этом вы можете поместить зашифрованный пароль в файл конфигурации, который читается во время выполнения. Разрешите разработчикам подключаться к другому ftp (или с другой учетной записью, которая впоследствии будет удалена) и поместите зашифрованный пароль, который вы хотите защитить, в файл конфигурации при развертывании приложения.

0 голосов
/ 09 октября 2008

фактический ответ - нет. Стандартное общение между клиентом и сервером FTP фактически передает имя пользователя и пароль по сети в незашифрованном виде. Таким образом, даже если вы попытаетесь использовать какую-либо схему для шифрования реальных данных внутри вашего приложения, любой, у кого есть копия Ethereal, сможет ее прослушать.

0 голосов
/ 09 октября 2008

Нет, нет способа сделать это безопасно. В любом случае, ftp не является безопасным протоколом, поэтому людям не понадобится исходный код для просмотра вашего имени пользователя и пароля, а только анализатор локальной сети. Вы можете избежать этой проблемы, используя ssh-туннелирование, но если вы отправите исходный код, люди, имеющие к нему доступ, всегда смогут получить из него имя пользователя и пароль. Даже без источника и даже с защищенным протоколом выделенный злоумышленник с дизассемблером / отладчиком и некоторым свободным временем все равно сможет извлечь эту информацию из исполняемого файла. Если имя пользователя и пароль должны быть безопасными, не включайте их в код, даже если они запутаны!

0 голосов
/ 09 октября 2008

По сути, нет. Вы можете усложнить задачу, но любая схема, в которой есть код, запущенный на чужом компьютере, подвержена атаке. Как FTP-сервер узнает, что он обращается к вашему приложению, а не к тому, кто взломал то, что им нужно из вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...