Проверка подлинности сеанса с помощью cookie: проблема безопасности - PullRequest
0 голосов
/ 18 января 2019

У меня есть простой механизм «аутентификации сеанса»:

  • каждый раз, когда пользователь входит в сеанс, он создается на стороне сервера базы данных, и его идентификатор сеанса устанавливается зашифрованным как «сеансовый cookie» для клиента
  • при выходе из системы или закрытии экземпляра браузера, сеанс либо удален, либо признан недействительным

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

Тем не менее, , даже если я использовал cookie с короткой датой истечения срока действия, кража все еще может происходить в нем . Есть ли другие шаги, чтобы избежать этой проблемы? Допустимо использовать только короткую дату истечения срока действия (если да, каковы приемлемые временные рамки?), Или есть другие дополнительные методы для решения этой проблемы?

1 Ответ

0 голосов
/ 18 января 2019

Лучшая практика для файлов cookie сеанса - не устанавливать время истечения, чтобы они были действительны для сеанса браузера. Если вы установите время истечения, cookie станет постоянным, будет храниться на диске на клиенте и т. Д. - это увеличивает общий риск.

Вы правы в том, что любой, у кого есть cookie, может выдать себя за пользователя. Чтобы избежать этого, вы должны установить cookie как httpOnly, чтобы избежать доступа к Javascript (XSS) и secure, чтобы он отправлялся только через https.

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

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

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