Может ли кто-то, кто просто знает мой текущий JSESSIONID, выдать себя за мою сессию или взломать ее (Tomcat 7/Glassfish 3.2))?

Я ищу простой английский, "для чайников" объяснение того, как JSESSIONID работает с точки зрения безопасности

  • Может ли кто-то, кто просто знает мой текущий JSESSIONID, выдать себя за / с помощью моей сессии?
  • В каких сценариях JSESSIONID будет частью URL, и остается ли этот риск безопасности OWASP № 2 (сценарий № 1) актуальным для последних версий Tomcat / Glassfish, и если да, то что нужно "отключить / включить", чтобы предотвратить его?

1 ответ

Решение

Q: Может ли кто-то, кто просто знает мой текущий JSESSIONID, выдать себя за моего сеанса?

A: Да.

Вот почему важно, чтобы ваш сайт был осторожен с файлами cookie. Действительно, если вы беспокоитесь о перехвате пакетов, это означает, что вы должны отправлять куки-файл сеанса только тогда, когда запрос был сделан через соединение HTTPS 1. А установка флага 'httpOnly' помогает, отключая JavaScript-файл на стороне клиента и т. Д.

Q: В каких случаях JSESSIONID будет частью URL

A: Обычно это происходит, когда веб-сервер (на уровне контейнера) помещает токен сеанса в URL:

  • в качестве обходного пути для браузера пользователя, не устанавливающего файлы cookie, или
  • сделать URL-адрес "подходящим" для закладки или отправки кому-либо по электронной почте.

Очевидно, что это небезопасно и является "плохой практикой" ... хотя короткий тайм-аут сеанса имеет тенденцию смягчать это. (В качестве альтернативы, это нормально по HTTPS ... при условии, что пользователь не делится URL-адресом с другими людьми 1.)


Для Tomcat 6.x я считаю, что способ предотвратить (когда-либо) контейнером добавление идентификатора сеанса в URL - это добавить disableURLRewriting="false" приписать контексту.

Для Tomcat 7:

Context.disableURLRewriting: это было удалено. Эквивалентный эффект можно получить, настроив элементы session-config/tracking-mode в веб-приложении или в глобальном файле CATALINA_BASE/conf/web.xml.


1 - Предполагается, что вы исправили (и т. Д.) Свой веб-сервер для устранения известных уязвимостей конечной точки SSL. Если нет, ваши HTTPS-соединения могут быть небезопасными.

Другие вопросы по тегам