Лучшая практика для защиты формы Windows с паролем / приложение журнала с защитой паролем)? - PullRequest
2 голосов
/ 24 марта 2012

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

Но какова лучшая практика?Где я могу безопасно хранить пароль?И я думаю, что лучше всего хранить хэш пароля - как это сделать?

Хранение пароля (или хэша) в легко читаемом XML-файле не может быть лучшим вариантом?Затем можно просто открыть файл XML и удалить строку хеша, тогда при загрузке приложения не будет пароля, верно?

С уважением

Ответы [ 2 ]

2 голосов
/ 24 марта 2012

Давайте подойдем к этой проблеме с желанием прочитать ваш журнал. Ваш анзац о хешах не плохой, но предположим, что вы определили пароль для запуска, и мы сохраним хеш для пароля в некотором XML-файле. Что мешает мне разобрать ваше приложение (что особенно легко сделать, если мы рассматриваем C # или какой-либо другой язык JIT) и просто изменить подпрограмму проверки пароля, чтобы она всегда возвращала true?

Что вам нужно, так это шифрование актуального журнала / страниц. См. ответ на этот вопрос SO для полной процедуры, которая искажает вашу страницу журнала, чтобы ее было безопасно сохранять в незашифрованном виде и очень трудно получить без пароля.

Теперь вы также можете при желании сохранить хеш и проверить его действительность для пользователя; поскольку для открытия каждой страницы журнала по-прежнему потребуется действительный пароль.

EDIT

Этот ТАК ответ еще лучше. Обе версии используют RijndaelManaged класс , который является частью .NET Framework для шифрования и дешифрования.

0 голосов
/ 24 марта 2012

Да, хеширование паролей - лучший вариант.Это действительно не имеет значения (в большинстве случаев), где вы храните пароль, если вы даете пользователю способ его восстановить.Например, при запуске пользователь создает свой журнал, поэтому пароль для введенного пользователя создается / хэшируется.Вам также нужно будет запросить другую информацию, такую ​​как девичья фамилия матери, имя первого питомца и т. Д. (Что-то, что пользователь узнает).

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

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

Множество способов сделать это, но ни одного полного доказательства.

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