2016-07-27 3 views
0

Я хочу сохранить имя пользователя и пароль в файлах cookie. Я зашифровал пароль, используя технику Хеширования MD5. , так как я могу хранить этот зашифрованный пароль в файлах cookie?Как сохранить зашифрованный пароль в файлах cookie на C#?

+1

http://stackoverflow.com/questions/2100356/is-it-secure-to-store -passwords-in-cookies –

+3

Нет, просто .. .NO –

+0

@KayNelson I m шифрует этот пароль. так это безопасно или нет? – Nik

ответ

0

Вы не должны хранить имя пользователя и пароль в файлах cookie, потому что это отправлено клиенту. Даже если он хэширован, особенно если вы собираетесь напрямую сравнивать хешированный пароль, полученный в файле cookie, с одним в базе данных. Это нарушает цель хэширования.

Если вы хотите использовать сеанс пользователя между запросами, вы должны использовать идентификатор сеанса. Я не эксперт C#, но с быстрым гугле я нашел это:

HttpContext.Current.Session.SessionID 

Вот что я хотел бы хранить в куки.

+0

Но я сравниваю хешированный пароль, который находится в пароле базы данных с хешированным паролем. – Nik

+0

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

+0

Извините за двойной комментарий, хотя нажатие enter введет пустую строку вместо отправки.Ну, я говорил, что если вы сравните данные, полученные с хэшами базы данных напрямую, если кто-то получит доступ к хэшам, они смогут аутентифицироваться на сервере. Цель хэширования заключается в том, что в базе данных есть разные данные, которые отправляется клиенту. –

1

Thats not the way. Вы добавляете некоторые параметры, такие как временная метка, пользовательский агент, текущий ip, имя пользователя и т. Д. Но не Пароль. Теперь вычислите хеш для вашего токена и отправьте его как файл cookie. То, как делается токен аутентификации.

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

Кроме того, MD5 не хеширует, а не шифрует. Между ними существует большая разница. Кроме того, используйте SHA вместо MD5. См. this.

0

Я не рекомендовал бы это к любому ...

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

Таким образом, чтобы сохранить информация, как следовать

Session["username"] = txtusername.Text; 

затем использовать его на другую страницу или где-то еще

string username = Session["username"].toString();