Лучший способ для длительного входа в систему с сервлетами Java - PullRequest
1 голос
/ 24 сентября 2010

В моем веб-приложении мне нужно распознавать вошедших в систему пользователей, даже если они перезагружают браузер (функция веб-сайтов «Запомнить меня»). Какова лучшая практика для достижения этого с помощью Java Servlet API?

Я рассмотрел следующие варианты:

  1. Использование долгосрочных сеансов HttpSession и сохранение идентификатора пользователя в качестве атрибута сеанса. Этот подход не позволяет пользователю перезапустить браузер, потому что JSESSIONID cookie не является постоянным и нет стандартного способа изменить его свойства. Единственный вариант, который я рассматриваю, - это использовать интерфейс SessionCookieConfig Tomcat 7.0 для настройки параметров JSESSIONID по умолчанию. Но есть сомнения в масштабируемости такого решения, потому что Tomcat будет хранить все сессии в течение длительного периода времени.

  2. Использование краткосрочных HttpSessions вместе с некоторым постоянным cookie, в котором хранится идентификатор пользователя с некоторым хешем безопасности. Когда пользователь перезапускает браузер, он отправляет постоянный файл cookie, и сервер приложений связывает новый сеанс с идентификатором пользователя.

Каков общий способ достижения этого?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2010

Используете ли вы обычную аутентификацию на основе фильтров?Насколько безопасным должен быть ваш сайт?

Один из способов:

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

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

Имейте в виду, что вы делаете короткое замыкание, когда делаете это.Вы говорите: «О, смотри, ты только что вышел из ниоткуда. Думаю, я тебя знаю! Вот, ключи от моего замка!»Это похоже на запрос, который мы получили бы от маркетологов, которые ничего не понимали в безопасности и не заботились о том, что если бы нас взломали, проблем не было.

0 голосов
/ 24 сентября 2010

Мне всегда требовался больший контроль над сессиями, потому что они нужны мне для работы с несколькими веб-приложениями, поэтому я реализовал собственное решение с нуля.Это довольно просто, просто хешируйте случайное число и сохраните его в базе данных.Если у вас нет или вы хотите СУБД, просто какое-то хранилище ключей / значений.

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