Как мне управлять паролями в .net? - PullRequest
1 голос
/ 28 октября 2010

Я знаю, что есть класс SecureString, но для большинства сценариев я не думаю, что он действительно полезен.

Например, допустим, у меня есть система клиент / сервер.Серверу не нужно приложение, созданное мной, это может быть даже SQL Server без встроенной аутентификации.Когда пользователь вводит свой пароль в форму в клиентском приложении, он сохраняется в виде открытого текста в памяти, поэтому, хотя я могу использовать SecureString для его чтения, я не вижу смысла в этом.Конечно, это может уменьшить поверхность атаки, но не намного ... Даже если бы я это сделал, когда пользователь нажимает «ОК», должна быть сгенерирована простая текстовая строка, даже если мне просто нужно вычислить из нее хеш.*

Итак, есть ли в любом случае, чтобы строки паролей не перемещались, пока GC не решит восстановить память?Даже тогда память будет стерта, прежде чем она снова будет использоваться?

Ответы [ 2 ]

3 голосов
/ 28 октября 2010

SecureString - отличная идея, время которой еще не пришло.Это наиболее полезно в следующем сценарии:

  1. Поле пароля вашего уровня презентации захватывает каждое нажатие клавиши по отдельности и вставляет их в SecureString по одному.Класс демонстрирует несколько методов мутации, специально разработанных для облегчения этого.Например, WPF поддерживает это (через свойство элемента управления PasswordBox.SecurePassword ).
  2. Ваш API-интерфейс аутентификации принимает пароли типа SecureString.

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

Самый безопасный способ проверки подлинностипользователь всегда должен избегать обработки имени пользователя / пароля в целом.Вместо этого вы можете использовать проверку подлинности Windows, информационные карты, OpenID и т. Д.

1 голос
/ 28 октября 2010

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

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