Может ли кто-то, кто просто знает мой текущий 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-соединения могут быть небезопасными.