Это безопасно для хранения паролей в cookie?

Домашняя страница моего веб-приложения имеет флажок RememberMe. Если пользователь проверяет его, я, willl хранят почтовый идентификатор и пароль в cookie. Это - мой код:

if (this.ChkRememberme != null && this.ChkRememberme.Checked == true)
   {
     HttpCookie cookie = new HttpCookie(TxtUserName.Text, TxtPassword.Text);
     cookie.Expires.AddYears(1);
     Response.Cookies.Add(cookie);
   }

То, что я хочу знать:

  • Это безопасно для хранения паролей в cookie?
  • Что надлежащий способ сделать то же?
  • Каковы лучшие практики в установке времени для cookie?
59
задан Ajay 7 January 2015 в 15:32
поделиться

8 ответов

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

Хорошее место, чтобы найти некоторые ответы о файлах cookie Cookie Central. Для членства обычно используется файл cookie с длинной строкой, называемой «токеном», который выдается с веб-сайта при предоставлении вашего имени пользователя и пароля. Подробнее о процессе вы можете найти в этой статье . При использовании форм аутентификации в ASP.NET вы можете установить файл cookie aturection:

FormsAuthentication.SetAuthCookie(userName, isPersistanceCookie);

Вторым параметром используется для функциональности «Запомнить меня» - если true он будет создавать постоянные файлы cookie, которые будут длиться после того, как вы покинете сайт. Вы также можете программически манипулировать файлом cookie:

HttpCookie authCookie =
  HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
59
ответ дан 24 November 2019 в 18:19
поделиться

Нет, не удаленно безопасно. У вас нет никакой гарантии, что файлы cookie не хранятся в простом тексте (и на самом деле, большинство реализаций делают хранить их как простой текст).

Уменьшите вам, «помните меня», по своей природе небезопасно, так как кто-либо перехватывает печенье, получает доступ к приложению. Но разоблачение пароля пользователя принимает шаг дальше вниз по лестнице отсутнении. :-) И, вероятно, заставляет пользователя действительно сумасшедшим, если они узнают.

Я использую зашифрованную строку cookie, которая включает в себя имя учетной записи пользователя в сочетании с токеном, который отсутствует (другой) способ, связанный с учетной записью пользователя, за исключением таблицы на моем сервере. Когда пользователь возвращается на сайт, мы расшифруем файлы cookie и посмотрим, фактически связан ли этот токен с этой учетной записью. Токен (и, следовательно, cookie) меняет каждый автоматический вход и недействителен, используемый для этого автоматического входа в систему. (Между токенами и учетной записью много к одной, чтобы разрешить автоматическое войти из нескольких местоположений. Вы можете ограничить, что если вам нравится.) Токены Time Out, если они не используются в течение X дней. (Это не только делается, ограничивая продолжительностью печенье; это сделано также для серверной стороны.) Есть несколько других вещей, которые я бросаю там, чтобы сделать жизнь BIT , сложно, чтобы кто-то пытался декодировать Печенье (успешно расшифровывало его) или используйте украденное cookie (которое не требует дешифрования), но нет смысла идти сверхкиллом (опять же, "помните меня" по своей природе небезопасно).

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

Вам может быть интересно, почему у меня есть имя пользователя в cookie. Для прямых «запомни меня» цели, я бы не рекомендовал, даже если он зашифрован (в конце концов, это половина пары аутентификации в системе имени пользователя + пароля). Я был немного удивлен, чтобы найти его в нашем печенье, когда я посмотрел на формат, напоминая себе, как мы это сделали за этот вопрос; Но тогда я увидел комментарии, объясняющие, почему это там, и есть причины, не связанные с «помните меня» (не обязательно убедительны причины, в глазах, но причины).

На последней ноте тот факт, что «запомнить меня», по своей природе небезопасно, является одной из многих причин, почему журналы сайта очень важны, и почему вы должны потребовать посылаче данных в процессе разрешения изменений в важной информации об учетной записи (чтобы сделать Для того, чтобы кто-то украл печенье, чтобы взять на себя ответственность на счет).

16
ответ дан 24 November 2019 в 18:19
поделиться

Это то, что вы никогда не должны делать, потому что очень легко изменить значение файла cookie и отправить обратно на сервер. Даже хранение «пользователь протянул как« наивывисты »в файле cookie неверно, потому что я мог бы затем изменить его на« пользователь войти в систему как «Pandiya Chendur».

То, что вы можете сделать в cookie, дают информацию клиентам, что даже если изменено, не имеет смысла к серверу. Например - любимый цвет, первая страница Layout et cetea.

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

Что Microsoft MSDN говорит о использовании файлов cookie :

Проблемы безопасности с файлами cookie похоже на получение данных из клиент. В вашем приложении, Печенье - это еще одна форма ввода пользователя и поэтому подвержены изучению и подделка. Пользователь может как минимум Смотрите данные, которые вы храните в Cookie, так как файл cookie доступен на собственном компьютере пользователя. Пользователь также может изменить печенье до Браузер отправляет это вам.

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

Точно так же быть подозрительным к Информация, которую вы выходите из файла cookie. Не думайте, что данные так же, как когда вы написали это; использовать те же гарантии в работе с cookie значения, которые вы будете с данными, что Пользователь набрал на веб-страницу. То Примеры ранее в этой теме показали HTML-кодирование содержимого файла cookie Прежде чем отображать значение на странице, как вы бы должны были отображать любой Информация, которую вы получаете от пользователей.

cookies отправляются между браузером и сервер как простой текст, и все, кто может перехватить ваш веб-трафик Прочитайте cookie. Вы можете установить cookie свойство, которое вызывает печенье передается только в том случае Использует слой защищенного сокета (SSL). SSL не защищает печенье от Быть читать или манипулировать, пока оно на компьютере пользователя, но это делает предотвратить чтение cookie в пути, потому что печенье зашифрован. Для получения дополнительной информации см. Основные практики безопасности для веб Приложения.

10
ответ дан 24 November 2019 в 18:19
поделиться

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

0
ответ дан 24 November 2019 в 18:19
поделиться

Нет! Не храните пароли в cookie!

В ASP.NET используйте

FormsAuthentication.SetAuthCookie(username, true);

значение второго аргумента определяет, будет ли настойчивое cookie (то значение Checkbox me me me).

25
ответ дан 24 November 2019 в 18:19
поделиться

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

Но не рекомендуется,

2
ответ дан 24 November 2019 в 18:19
поделиться

Я думаю, вам нужно создать токен с именем пользователя и зашифрованную строку аутентификации, которую вы получаете от личности Windows. Не нужно хранить пароль на cookie. У нас есть наше приложение, которое сохранило имя пользователя и аутентифицированную строку

2
ответ дан 24 November 2019 в 18:19
поделиться

BTW, Пароли для хранения не защищены везде, как клиент, так и на стороне сервера.

Вам не нужно это делать.

2
ответ дан 24 November 2019 в 18:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: