Каков механизм передачи атрибута сеанса из фильтра в сервлет? - PullRequest
0 голосов
/ 29 марта 2012

В веб-приложении я использую несколько фильтров, а в одном из них я использую что-то, что BalusC назвал «злоупотреблением сеансом». В основном в фильтре я делаю что-то вроде этого:

request.getSession().setAttribute("abuse", ...);

пока позже в сервлете я прочитал этот атрибут.

Я использую атрибут сеанса вместо атрибута запроса, потому что я делаю перенаправление, и вот где я потерян ...

После того, как браузер получит 302 и выполнит перенаправление, как Tomcat (или любой другой сервер Java Webapp) узнает, что последующий GET (тот, что после перенаправления) принадлежит той же «сессии», что и сеанс, возвращенный в то время как внутри первый фильтр (тот, что был до перенаправления)?

Работает ли это, даже если в браузере клиента отключены JavaScript и файлы cookie И , если я отключаю JSESSIONID?

Я должен отметить, что JSESSIONID отключен для SEO и для удобства пользователей: точно так же, как stackoverflow.com никогда не показывает сверхдлинные URL-адреса с бессмысленными техническими надписями в них, мое веб-приложение тоже не JavaScript и Cookies могут быть отключены пользователем. Поэтому я хочу знать, будет ли работать «злоупотребление сеансом», которое я делаю, даже если эти три «функции на стороне клиента» недоступны.

1 Ответ

1 голос
/ 29 марта 2012

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

Если вы не отслеживаете сеансы, тогдакаждая сессия создается, а затем теряется.

...