Реализация идентификатора сеанса как части HttpSession?

#java #security #http #session #httpsession

#java #Безопасность #http #сессия #httpsession

Вопрос:

Я разрабатываю новый тип HTTPServer, я хотел бы поддерживать функциональность HTTPServer, подобную Java, как реализовать такую функцию?

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

но достаточно ли это надежно? почему никто не может попытаться угадать строку идентификаторов сеанса и попытаться перехватить чей-либо другой сеанс?

Ответ №1:

Если он достаточно длинный, он некоторое время выдержит атаку методом перебора. Если вы не используете SSL, кто-то другой может «перехватить» ключ сеанса по сети.

Комментарии:

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

2. Могут быть другие меры. Например, вы можете потребовать, чтобы этот сеанс был привязан к определенному IP-адресу. Это может немного помочь, хотя и не слишком хорошо работает через прокси. Другой популярный элемент безопасности — защита от XRF-атак. По сути, каждая страница генерирует новый дополнительный одноразовый номер, и его нужно возвращать каждый раз.

Ответ №2:

Класс SecureRandom — хорошее место для начала, если вы хотите начать генерировать достаточно подходящие идентификаторы сеанса. Есть еще несколько вещей, на которые следует обратить внимание, в первую очередь размер сгенерированного идентификатора среди прочих. Вы могли бы обратиться к статье «Безопасное управление сеансами с помощью файлов cookie для веб-приложений» для получения дополнительной информации. Раздел, в котором обсуждается генерация энтропийных значений, вероятно, то, что вам нужно.