Защита паролей в конфиге проблема - PullRequest
3 голосов
/ 13 сентября 2009

Мое приложение .NET WinForms подключается к ftp-серверу и загружает файл. Для этого требуется пароль для подключения. Пароль должен храниться в файле конфигурации, но он должен быть зашифрован. Единственные решения для этого, которые я нашел, включают в себя либо защиту всего раздела конфигурации (который для меня бесполезен, как в разделе appSettings, где есть пароль, есть другие данные, которые необходимо изменить вручную), либо использование DPAPI ( не работает тоже, потому что пароли, зашифрованные на моем компьютере, не могут быть расшифрованы на других, и это необходимо). Есть ли другие техники?

Ответы [ 2 ]

3 голосов
/ 13 сентября 2009

Вы можете зашифровать определенные части файла .config - например, раздел <connectionstrings>. Это может содержать пароль FTP (хотя на самом деле это не строка подключения), и вы можете оставить раздел <appSettings> незашифрованным.

Обновление: Если вы не можете использовать <connectionstrings>, вы можете создать свой собственный раздел и зашифровать его.

Большинство ресурсов говорят вам об использовании инструмента ASP.NET aspnet_regiis. Вот статья , в которой говорится о шифровании разделов для приложений C # для Windows, где использование ASP.NET не вариант.

Дальнейшее обновление: В комментарии вы сказали

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

Так что, возможно, это решение будет работать для вас.

2 голосов
/ 13 сентября 2009

Вы можете зашифровать и расшифровать вручную, используя симметричный шифр внутри вашего приложения (например, AES), и сохранить зашифрованный пароль в файле конфигурации.

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

Вы можете запутать свой двоичный файл, чтобы сделать это более сложным.

Конечно, имя пользователя и пароли FTP все равно отправляются в виде открытого текста (если вы не используете ftps :), поэтому любой, кто «слушает» ваше приложение, довольно быстро определит имя пользователя и пароль.

Я полагаю, все сводится к тому, насколько безопасно вы хотите использовать это имя пользователя и пароль в своем приложении? Это решение препятствует тому, чтобы те с любопытными глазами получили его, но не те, которые решительно настроены.

...