2013-05-08 5 views
0

Я работаю по проблеме безопасности в .net приложения и я сообщил, что мой код уязвим, и я вижу проблему так, как я сохранить парольКак зашифровать и сохранить пароль

Например:

<add key="RegxxxChannelPassword" value="test"/> 
<add key="xxxRegistrationConnStr" value="xxxxxxxxxx; 

Так что мой инструмент показывал, что хранение пароля в виде обычного текста опасно.

Могу ли я ввести пароль и сохранить его?

Может кто-нибудь предложить мне, если есть какие-либо алгоритмы?

+0

Да, шифрование пароля существует уже довольно долгое время. Вы потрудились самостоятельно исследовать проблему? – tnw

+0

Существует множество примеров того, как шифровать и расшифровывать простой текст. [Посмотрите на этот вопрос] (http://stackoverflow.com/questions/13450201/working-with-registry-in-c-sharp-2-0-windows-forms/13450315#13450315), например, и вторую часть мой ответ – Steve

+0

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

ответ

2

Было бы намного проще использовать поставщик членства. Если вы сами делаете шифрование, вы изобретаете колесо и не считаете, что может сделать каркас для вас.

Предлагаю вам go read about it.

Соответствующее свойство поставщика, в данном случае, это passwordFormat.

Редактировать: На мгновение я подумал, что вы говорите о паролях пользователей. Если это пароль для строки подключения, он должен быть в файле .config, например web.config. Если у вас это в нужном месте, VS не будет жаловаться на то, что он незашифрован, так как это контент, который никогда не будет передан клиенту в любом случае.

+0

Вы правы. Я говорил о web.config, но я использую те же строки соединения во многих местах моего приложения. Так что я блуждал, как это можно зашифровать, и я думаю, что как только я зашифрую пароль в файле web.config. Я могу использовать такой же во всех местах. – user1567194

+1

Вам не нужно зашифровывать его.Просто используйте его так, как он предназначен, и вы не получите никаких предупреждений или ошибок. Я предлагаю вам посмотреть примеры кода, содержащие строки подключения в web.config. – Renan

0

Я рекомендовал бы, чтобы вы посмотрите, что Rijndael для двухсторонним шифрования, если вы хотите сохранить пароль в файле Web.config: http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndael.aspx

Я согласен с @Renan, надлежащим образом идти , заключается в использовании MembershipProvider.

1

Вы можете зашифровать разделы web.config с помощью aspnet_regiis, но web.config - довольно стандартное место для хранения паролей и т. Д., Пока сайт развернут на сервере, который у вас есть. Вы также можете поместить значения в реестр, но в большинстве случаев это не нужно. Вот статья о шифровании разделов web.config:

http://msdn.microsoft.com/en-us/library/zhhddkxy%28v=vs.100%29.aspx

Если вы идете по этому пути, вы будете запускать команду для шифрования web.config в качестве шага развертывания, и приложение будет обрабатывать и расшифровывать с помощью значения сами по себе.

+0

Истинно, и это, безусловно, дает некоторым людям кусочек ума. Однако тот простой факт, что, поскольку у самого веб-приложения есть права на его расшифровку, а затем, когда у злоумышленника есть доступ к корневому сайту, чтобы вытащить файл web.config, у них почти всегда есть права на ввод кода в любом случае .., что делает его тривиальным расшифрованную строку из web.config. tldr; это пустая трата времени. – NotMe

Смежные вопросы