GWT: сохранение идентификатора сеанса в cookie, и что дальше?

В настоящее время я создаю сайт, используя GWT, размещенный на AppEngine. Я делаю это со своими собственными логинами, которые делаю (я знаю, что Google предоставляет что-то с GWT, но мне нужна моя собственная система входа), и я уже довольно давно пытаюсь определить сеансы. Я нашел несколько руководств, и один из сайтов, который я читал, это http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ

Существует раздел "Как запомнить логины". Я знаю, как получить идентификатор сеанса и сохранить его на клиенте в файле cookie с помощью вызова RPC. Я не понимаю, что через день или около того пользователь возвращается, и я должен получить идентификатор сеанса из файла cookie и отправить его обратно на сервер. Что я должен делать на сервере, чтобы безопасно оценить, является ли идентификатор сеанса все еще допустимым, и получить всю необходимую информацию о пользователе?

Дополнительные вопросы: 1. Что заставит изменить идентификатор сеанса? 2. Что, если пользователь был на ноутбуке, а пользователь ушел в другое место. Сможет ли он по-прежнему безопасно войти в систему без повторного ввода логина и пароля?

Спасибо!

~ Скотт

7
задан Scott 18 August 2010 в 02:52
поделиться

2 ответа

Аналогичный вопрос: вопрос о GWT, файлах cookie и управлении веб-страницами .
Вы должны помнить одну важную вещь: не полагайтесь только на файлы cookie - также перенесите идентификатор сеанса / токен в полезную нагрузку запроса и сравните его со значением cookie на стороне сервера. Это предотвратит атаки XSRF. Это то, о чем вам следует беспокоиться.

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

Что мне делать на сервере чтобы надежно оценить, если идентификатор сеанса все еще допустим, и подтяните вся необходимая информация о пользователь?

Вы должны отслеживать пары идентификаторов сеанса / входа в систему в своей БД.

Что может привести к изменению идентификатора сеанса?

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

8
ответ дан 7 December 2019 в 03:09
поделиться

Чтобы запомнить логины, вам необходимо безопасно сгенерировать уникальный идентификатор сеанса. Обычно это помещается в файл cookie. Я бы порекомендовал использовать фреймворк, который делает для вас файлы cookie сеанса. Ошибки могут сделать ваш сайт открытым для злоупотреблений. На что следует обратить внимание:

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

Ответы на ваши дополнительные вопросы есть.

  1. Ничто на стороне клиента не может изменить идентификатор сеанса. Идентификатор сеанса должен обновляться при каждом входе в систему.
  2. В зависимости от того, насколько безопасен идентификатор сеанса, им, возможно, придется войти в систему. Файлы cookie безопасного сеанса часто кодируют IP-адрес, чтобы предотвратить кражу файлов cookie. В таком случае пользователю портативного компьютера потребуется снова войти в систему.
1
ответ дан 7 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

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