Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Resin и DOS атаки 
:(
    Опции темы
UnicornMirage
Дата 7.5.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



Привет всем.
тут возник вопрос - с сессиями.. проводил небольшой эксперимент - создавал сервлет в котором в методе service создавал сессию:
HttpSession session = request.getSession();

так вот если на стороне клиента отключить поддержку Cookies то при каждом запросе пользователя с данного хоста будет создаваться объект HttpSession - не является ли это потенциальной возможностью перегрузить сервер Resin экземплярами сессий? Ну и что что время сессии можно установить - даже если поставить минимальное значение жизни - 1 минуту - то в течении 1 минуты можно в цикле наплодить столько сессий - что никакой памяти не хватит. Это разумеется лишь предположение - и я, как новичок, буду продолжать исследовать эту область - тем не менее задаю вопрос гуру. 
PM MAIL   Вверх
Tirael
Дата 7.5.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 31.1.2006
Где: Москва

Репутация: 1
Всего: 7



Сессия создается для каждого нового клиента. Один раз. Если один и тот же клиент опять заходит на сервер, сессия сохраняется, а не создается новая. Сколько клиентов - столько сессии.

Добавлено @ 21:34 
Цитата(UnicornMirage @  7.5.2006,  21:11 Найти цитируемый пост)
о при каждом запросе пользователя с данного хоста будет создаваться объект HttpSession

не будет. Создастья только один раз.  
--------------------
 
PM MAIL   Вверх
batigoal
Дата 7.5.2006, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(Tirael @  7.5.2006,  22:31 Найти цитируемый пост)
Сессия создается для каждого нового клиента. Один раз. Если один и тот же клиент опять заходит на сервер, сессия сохраняется, а не создается новая. Сколько клиентов - столько сессии.

Хм. По-моему, механизм не совсем такой. Если клиент уходит с сайта, а потом заходит на него ещё раз, то создается новая сессия (возможно, нужен некоторый таймаут, иначе подхватится старая). 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Tirael
Дата 7.5.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 31.1.2006
Где: Москва

Репутация: 1
Всего: 7



Цитата(Lamer George @  7.5.2006,  21:41 Найти цитируемый пост)
Если клиент уходит с сайта, а потом заходит на него ещё раз, то создается новая сессия

Кажется можно указать какой тип сессии создавать: которая исчезает по таймауту, или которая исчезает как только пользователь покинул сайт.  
--------------------
 
PM MAIL   Вверх
UnicornMirage
Дата 7.5.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



я просто проверял с помощью листенера HttpSessionListener который реализовывал в своем сервлете.. при каждом запросе к сервлету создавался новый экземпляр сессии - я даже проверял флаг HttpSession.isNew- это происходило при отключенных куках на стороне клиента. Если куки включить - то разумеется сессия будет возвращаться старая...

Таймаут ставил у сессии - 1 минуту.. разумеется все новые уничтожались.. только пока я проводил эксперимент - наплодил объектов около сотни.... а если написать цикл запросов к серверу? что будет? smile

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

Добавлено @ 22:02 
авообще все эти вопросы возникли совершенно из другой задачи - мне хотелось как то раскопать в библиотеке com.caucho хоть что нить напоминающее менеджер сессий - чтобы из сервлета иметь возможность управлять активными сессиями... уверен что в Резине это есть но это спрятано...

например интересный класс Jmx - до сих пор немогу понять как им нормально пользоваться... 
PM MAIL   Вверх
batigoal
Дата 7.5.2006, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(Tirael @  7.5.2006,  22:53 Найти цитируемый пост)
Кажется можно указать какой тип сессии создавать: которая исчезает по таймауту, или которая исчезает как только пользователь покинул сайт.

У любой сессии есть таймаут, но это таймаут её уничтожения, когда юзер сидит и ковыряет в носу, глядя на страничку. А вот в немедленном уничтожении сессии после закрытия браузера я не уверен. Надо будет поэкспериметировать.

Цитата(UnicornMirage @  7.5.2006,  22:59 Найти цитируемый пост)
при каждом запросе к сервлету создавался новый экземпляр сессии

А как ты делал эти запросы - перезапуском браузера, или как-то по-другому? 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
UnicornMirage
Дата 7.5.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



Цитата
А вот в немедленном уничтожении сессии после закрытия браузера я не уверен. Надо будет поэкспериметировать.

насколько я понял при экспериментировании (вариьировании параметра session.setMaxInactiveInterval(int time)) - хотя в спецификации указано что передаваемое значение в секундах - на практике оказывалось в минутах - например при указании параметра равным 1 - сессия существовала минуту неактивности. Меньше задать таймаут не получилось.

Цитата
А как ты делал эти запросы - перезапуском браузера, или как-то по-другому?

1) я в браузере отключил поддержку куков
2) из браузера делал GET запрос к сервлету - причем все время делал refresh страницы - запросы шли одни и те же.. и каждое обращение фиксировалось HttpSessionListener'ом - создавался новый объект HttpSession и у него флаг isNew был true.


вообще насколько мне стало ясно когда я пытался разобраться как работает HttpSession - он работает только на основании Cookie - нет куков - сессия создается как будто бы пользователь зашел в первый раз.. есть куки - контейнер сервлетов ищет в своем Map'e сессий уже созданный экземпляр HttpSession по ключу идентификатора сессии...

Как бы я хотел получить доступ к этому гипотетическому Map сессий в Resin (кто бы знал! smile ) - это моя давняя мечта... Не хочется делать собственную коллекцию активных сессий - ведь она существует в resin и по моему где то через JNDI ее можно достать.. только как? 
PM MAIL   Вверх
ALKS
Дата 8.5.2006, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



сессия уничтожается только по тайм-ауту апп сервер просто не в состоянии узнать что пользователь закрыл браузер. как? реквеста-то об этом не поступит smile

сесия связыватеься с браузером: запустите оперу, IE а фаерфокс с одной машина на один и тот же сайт - создаться 3 сесии smile 

если куки убраны, то нужно обеспечивать то, что в запросе будет присутсвовать почти-параметр JSESSION и вот с этим у автора я полагаю проблеммы. smile 
PM   Вверх
UnicornMirage
Дата 8.5.2006, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



сессия связывается не с браузером а с куком, если взять кук с одного браузера и перенести его на другой - сессия будет та же. 
PM MAIL   Вверх
Tirael
Дата 8.5.2006, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 31.1.2006
Где: Москва

Репутация: 1
Всего: 7



Цитата(ALKS @  8.5.2006,  00:31 Найти цитируемый пост)
сессия уничтожается только по тайм-ауту апп сервер просто не в состоянии узнать что пользователь закрыл браузер. как? реквеста-то об этом не поступит 

И все равно у меня чувство, что где-то я об этом читал. Впрочем, возможно вы правы. Разберусь завтра. 

Цитата(UnicornMirage @  8.5.2006,  00:51 Найти цитируемый пост)
сессия связывается не с браузером а с куком,

Хм...я всегда думал, что если куки отключены, сессией все таки можно пользоваться. 
--------------------
 
PM MAIL   Вверх
batigoal
Дата 8.5.2006, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(ALKS @  8.5.2006,  01:31 Найти цитируемый пост)
если куки убраны, то нужно обеспечивать то, что в запросе будет присутсвовать почти-параметр JSESSION и вот с этим у автора я полагаю проблеммы.

То есть сессия может отслеживаться только этими двумя способами (JSESSION либо куки)? 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
ALKS
Дата 8.5.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



Цитата(UnicornMirage @  8.5.2006,  00:51 Найти цитируемый пост)
сессия связывается не с браузером а с куком, если взять кук с одного браузера и перенести его на другой - сессия будет та же. 

Нет. Сессия связывается с еёной ID. smile т.е. просто с неким номером который с каждым реквестом должен приходить апп-серверу. другое дело что апп сервер пытаеться выдрать номер от куда только можно и  впервую очередь - из Cookies.
Для простоты: каждый раз когда реквест приходит апп-серверу он обязан сообщить в соответсвии с какой сесией он приперся. если он не сообщит - будет создана новая сесия для него.


Цитата(Lamer George @ 8.5.2006,  10:04)
Цитата(ALKS @  8.5.2006,  01:31 Найти цитируемый пост)
если куки убраны, то нужно обеспечивать то, что в запросе будет присутсвовать почти-параметр JSESSION и вот с этим у автора я полагаю проблеммы.

То есть сессия может отслеживаться только этими двумя способами (JSESSION либо куки)?

Нет smile
По умолчанию (ну или в соответствии со спецификацией) сессия может отслеживаться только по JSESSIONID. Но если Cookies включены, то JSESSIONID помещаются в Cookies. Но никто не запрещает вам организовать собственный механизм для отслеживания сесий. smile

А чтобы JSESSIONID при необходимости добавлялось в линк нужно вызвать метод encodeURL класса HttpServletResponse.

ну т.е. в простейшем случае, в JSP все линки нужно обработать примерно так:
Код

<a href="<%=response.encodeURL("/app/mycoollink.do")%>">Link</a>


encodeURL сам решит когда нужно параметр в линк пихать а когда нет smile  

Это сообщение отредактировал(а) ALKS - 8.5.2006, 11:31
PM   Вверх
ALKS
Дата 8.5.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



Цитата(Tirael @ 8.5.2006,  01:03)
Цитата(ALKS @  8.5.2006,  00:31 Найти цитируемый пост)
сессия уничтожается только по тайм-ауту апп сервер просто не в состоянии узнать что пользователь закрыл браузер. как? реквеста-то об этом не поступит 

И все равно у меня чувство, что где-то я об этом читал. Впрочем, возможно вы правы. Разберусь завтра. 

Да ну вас право smile. Ещё раз: чтобы убить сессию по событию закрытия броузера, апп-сервер должен получить соответсвующий реквест. сам по себе Браузер ничего такого не шлет, но этого можно добиться, нарпимер написав плагин для браузера smile.
Весьма вероятно есть и другие пути (например java-апплет или ActiveX но я не в том ни в другом почти ничего не понимаю, так что не ругайтесь сильно). В любом случае никто в здравом уме таким извратом страдать не будет smile 
PM   Вверх
UnicornMirage
Дата 8.5.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



Цитата
А чтобы JSESSIONID при необходимости добавлялось в линк нужно вызвать метод encodeURL класса HttpServletResponse.


вот спасибо, не знал этого smile буду экспериментировать дальше! 

хороший метод! супер! можно дублировать JSESSIONID как в куках, так и в параметрах GET-запроса.. 

cскажите, а получающаяся ссылка в результате вызова метода response.encodeURL содержит добавленную строку jsessionid=xxxxxxxxxxxxxxxx через разделитель ' ; ' - это специфический разделитель, используемый для сервлетов? либо это какой то стандартный разделитель в GET- запросах?

 

Это сообщение отредактировал(а) UnicornMirage - 8.5.2006, 14:36
PM MAIL   Вверх
UnicornMirage
Дата 8.5.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



и всё таки это можно обойти - вначале вопроса я имел ввиду возможность организации DOS атаки.. предположим пользователь намеренно отключит куки - возьмет GET-запрос и исключит из него jsessionid. будет посылать серверу этот запрос в цикле а тот будет создавать все новые и новые HttpSessions.

что нужно сделать в сервлете чтобы не плодить объекты HttpSession?    

Это сообщение отредактировал(а) UnicornMirage - 8.5.2006, 14:50
PM MAIL   Вверх
ALKS
Дата 8.5.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



Цитата(UnicornMirage @ 8.5.2006,  13:11)

cскажите, а получающаяся ссылка в результате вызова метода response.encodeURL содержит добавленную строку jsessionid=xxxxxxxxxxxxxxxx через разделитель ' ; ' - это специфический разделитель, используемый для сервлетов? либо это какой то стандартный разделитель в GET- запросах?

я поэтому и назвал jsessionid "почти параметром".
такая форма впихивания jsessionid это спецификация J2EE. т.е. да, это особенность спецификации сервлетов к HTTP (и как следствие к GET) отношения не имеющая. почему так а не иначе - тема отдельного не маленького разговора... 

Цитата(UnicornMirage)

и всё таки это можно обойти - вначале вопроса я имел ввиду возможность организации DOS атаки.. предположим пользователь намеренно отключит куки - возьмет GET-запрос и исключит из него jsessionid. будет посылать серверу этот запрос в цикле а тот будет создавать все новые и новые HttpSessions.

что нужно сделать в сервлете чтобы не плодить объекты HttpSession?

UnicornMirage, телохранители говорят "если дело дошло до стрельбы, то мы уже облажались". перефразируя: если DOS атака прорваласть до апп сервера, что-то делать уже поздно. С DOS атаками борются совершенно специфицескими методами с помощье спецально программного обеспечения и железа, как правило на уровне фаерволов. это не проблемма разработчика вэб приложения. это проблемма сетевых и системных администраторов. спецификация J2EE не предусматривает никаких механизмов борьбы с DOS атаками. и повторяюсь - на этом уровне это делать уже очень поздно!  

Это сообщение отредактировал(а) ALKS - 8.5.2006, 20:20
PM   Вверх
Stampede
Дата 8.5.2006, 20:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Так, товарищи!

Прочитал я, что вы тут намолотили, и решил вмешаться. Понимать, как работают сессии, абсолютно необходимо, а иначе потом может быть мучительно больно.

Прежде всего: Servlets API - есть по сути жабный программный интерфейс для работы с HTTP. Вот от этого давайте и плясать.

В чем состоит назначение механизма сессий? По большому счету - в том, чтобы позволить серверу "узнавать" граждан, которые уже приходили раньше. Если мы сможем их узнавать, мы уж как-нибудь разберемся, что с этой инфой делать.

Теперь: что значит узнавать. В HTTP не так много средств, которые позволяют это делать. Спецификация Servlets определяет три механизма отслеживания сессий:

- кукисы:

- URL rewriting:

- SSL сессии.

Самое надежное средство - это SSL сессии, которые используют встроенный в HTTPS механизм идентификации клиента. Но, к сожалению, в большинстве случаев нам нужны решения для простого открытого трафика, поэтому на SSL сессиях можно сразу поставить крест.

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

Теперь очень важный момент: что такое куки и как они работают. Кука - это, грубо говоря, именованная строка текста, которая сассоциирована с адресом URL или его частью. Хотя кукисы не являются частью текущего стандврта HTTP/1.1, они описаны в RFC 2109 (http://www.w3.org/Protocols/rfc2109/rfc2109) от 1997 г. и поддерживаются всеми современными и не очень браузерами.

Так вот, как куки появляются и что с ними происходит дальше. Инициатива по созданию куки принадлежит серверу: когда он возвращает клиенту ответ HTTP (например, содержимое веб-страницы в HTML), он может при этом предварить собственно содержимое одним или несколькими заголовками HTTP. Согласно RFC 2109, одним из таких заголовков может быть Set-Cookie

Код

Set-Cookie: foo=bar; path=/; expires Mon, 09-Dec-2002 13:46:00 GMT


Согласно все тому же RFC 2109, браузер (если он поддерживает куки и они не выключены юзером) должен в том или ином виде эту принятую куку сохранить. А вот теперь самое интересное. Что происходит, кода юзер тыкает в ссылку? Правильно, браузер отправляет на сервер соответствующим образом оформленный HTTP запрос. Если при этом на URL ресурса распространяется действие ранее сохраненной куки, то браузер автоматически, не дожидаясь особого приглашения, добавляет к запросу заголовок Cookie:

Код

Cookie: foo=bar


Таким образом, при первом посещении сайта куки на клиенте еще нет - она появится вместе с ответом сервера. Зато при всех последующих посещениях мы уже по содержанию запроса можем узнать, был ли товарищ у нас раньше. Но - внимание! - мы не можем гарантировать, что он точно НЕ БЫЛ. Как мы используем это знание применительно к сессиям? А вот как.

Когда юзер приходит первый раз, и мы решаем открыть сессию, веб контейнер генерит уникальный идентификатор. Потом он создает объект типа сессия и присваивает ему этот идентификатор. Объект типа сессия - это по сути просто расширенный мап с рядом дополнительных свойств для нашего удобства. Что мы туда положим - это уже чисто дело нашей фантазии: можно положить историю хождения в рамках сессии, можно хранить товары для покупки (шоппинг карт) и прочую лабудень.

Теперь нас интересует вопрос, с которого началось обсуждение: что будет, если клиент выключил или не поддерживает куки? А будет то, чего опасался UnicornMirage: поскольку кука с запросом не поступает, сервер не может сказать наверняка, пришел ли товарищ в первый раз или у него просто не работают куки. А сессию, тем не менее, создавать надо, раз в коде сервлета это прописано. Ну вот он и будет их создавать - по сути в мусорную корзину, поскольку воспользоваться этими сессиями никто никогда не придет.

Хорошо, если юзер человеческий: ну сколько он там сможет натыкать? Десяток-другой бесполезных сессий. А что если пришел поисковый робот? Апорт, например, может запросто за несколько минут сделать сотни заходов. И если хороших, добропорядочных роботов можно определить по содержимому заголовка User-Agent, то бывают ведь и недобропорядочные (собиратели емейлов, например). которым никакой robots.txt не писан и которые любят маскироваться под человеческие браузеры. А еще бывают выкачивалки, которые в мгновение ока могут наплодить такую кучу сессий, что любой сервер загнется.

Напрашивается вопрос: а что же делать? А делать надо вот что: создать прослойку в веб приложении (например, в виде фильтра, хотя и необязательно), которая будет заниматься предварительной обработкой запросов и выявлять клиентов, для которых создавать сессию нежелательно. Логика обработки может включать:

- определение известных поисковиков;

- хранение истории все хапросов за определенный период времени (скажем, 30 минут), и выявление деятелей, которые заходят слишком часто (идентифицировать, например, по совпадению IP и содержимого User-Agent);

- ведение черного списка IP, и запросы с этих адресов слать лесом немедленно и без церемоний.

Тут на самом деле можно много чего придумать, при этом следует понимать, что совершенного метода отфильтровки не существует: всегда будут просачиваться плохие клиенты, и всегда найдутся нормальные, которые будут незаслуженно попадать под раздачу. Поэтому задача вебмастера - всегда быть начеку, регулярно анализировать логи, думать о более совершенных алгоритмах - одним словом, ловить мышей.

Трудно? Да, трудно. Но никто ведь и не обещал, что будет легко.

Хорошая новость - в том, что всего этого не следует опасаться на ранних стадиях жизни сайта. Пока ты никому особо не известен и не перешел ничьей дороги, ты будешь как тот неуловимый Джо - нафиг никому не нужен ломать тебя smile

На этом можно было бы и поставить точку, но у нас остался нерассмотренным еще один механизм отслеживания сессий: URL rewriting. Если говорить совсем коротко, то вот: НИКОГДА, НИКОГДА не используйте этот механизм. Почему - могу объяснить. Но - отдельно, а то и так пост здоровый получился.
 


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Tirael
Дата 8.5.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 31.1.2006
Где: Москва

Репутация: 1
Всего: 7



Здорово!! [+] Однозначно  smile  
--------------------
 
PM MAIL   Вверх
batigoal
Дата 8.5.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(Stampede @  8.5.2006,  21:34 Найти цитируемый пост)
На этом можно было бы и поставить точку, но у нас остался нерассмотренным еще один механизм отслеживания сессий: URL rewriting. Если говорить совсем коротко, то вот: НИКОГДА, НИКОГДА не используйте этот механизм. Почему - могу объяснить. Но - отдельно, а то и так пост здоровый получился.
  

Не, ну он еще спрашивает, а?.. smile

На крайний случай, можешь просто метнуть в нас умной ссылкой. Но лучше сам - доходчиво получается. smile 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Stampede
Дата 9.5.2006, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(Lamer George @  8.5.2006,  22:06 Найти цитируемый пост)
На крайний случай, можешь просто метнуть в нас умной ссылкой. Но лучше сам - доходчиво получается. smile


У меня действительно есть очень умная ссылка: я набрел на нее несколько месяцев назад и сохранил на всякий случай линк: http://servlets.com/archive/servlet/ReadMs...me=jsp-interest

Но вот что странно: когда я сейчас пошел посмотреть, все ли там на месте, оказалось, что самое интересное-то как раз куда-то пропало. Но не все потеряно, как оказывается. Повинуясь какому-то необъяснимому предчувствию, я сохранил тогда не только линк, но и весь текст мессаги - то, чего я практически никогда не делаю. Итак, вопреки козням злых сил, которые изо всех сил стараются скрыть правду о URL rewriting, мы сегодня имеем возможность узнать, как оно все обстоит на самом деле. Вот это сообщение:

Цитата

Geert Van Damme ([email protected]) writes on 2002-01-06 (display as raw message)

Content-Type: text/plain; charset="iso-8859-1"
Date: Sun, 6 Jan 2002 10:31:59 +0100
From: Geert Van Damme <[email protected]>
Subject: Re: Sessions and URL-Rewriting?


First of all, you shouldn't really bother. The servlet container should decide on the mechanism. (on some servers it's possible to specify that one of the mechanisms shouldn't be used.) The default mechanism is temporary cookies. If for some reason the browser doesn't accept cookies, the servlet container might switch to URL rewriting to keep the sessions. URL rewriting works, but there are a lot of drawbacks. That's why you should only use it when cookies are not possible. Now, why is it bad:

- It provides ugly URL's. At first you might say that this is not that important, but in a lot of cases it is really annoying. e.g. You can't save a certain page in your bookmarks because it also saves the session info. If you try to go to the bookmark, it says the session is expired. Very annoying. You cannot simply pass a URL to someone else (e.g. in an email)....

- For the developer, it's error-prone and requires maintenance. All links on all pages that stay within the same site, should be URLencoded. If a developer simply forgets this on a single place, sessions are dropped. With several browsers open, this might lead to users bein logged in twice in different sessions, which might be very confusing. It also means that all your pages should be dynamic. You cannot mix with simple plain HTML because these pages would contain links that don't keep
the session alive.

- And now the most important one:

Although lot's of people are paranoid when it concerns cookies, URL rewriting is far more insecure than cookies!!!! Because the session ID is located inside the URL it is much easier for other people to break into a session than with cookies. The session ID is not only readable in the IP packets when requesting a page, but also: in the apache log files, and in the HTTP_REFERER field of the requests to a next page!!!! This means that your session ID is plainly visible to other servers. Now that's very insecure IMO. I know what I'm talking about, I've done it more than once smile

Geert Van Damme


Я хотел бы выдать себя за умного и пересказать эти пункты своими словами без упоминания авторства, но я скажу честно, я настолько впечатлен прямотой, вескостью и убийственностью этих доводов, что просто не могу взять такой грех на душу smile

Что я могу сделать - так это прокомментировать аргументы автора, потому что если не представляешь, что такое URL rewriting, то некоторые вещи могут показаться непонятными. Но это завтра. 


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
batigoal
Дата 9.5.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(Stampede @  9.5.2006,  03:03 Найти цитируемый пост)
Что я могу сделать - так это прокомментировать аргументы автора, потому что если не представляешь, что такое URL rewriting, то некоторые вещи могут показаться непонятными.

Да вроде всё ясно smile 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
ALKS
Дата 9.5.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



текст отличный, спасибо Stampede.

Но. C первыми двумя доводами я не согласен. 

понятно вполне, что имееться под UGLY urls smile плохо например то что такие урлы не любят многие поисковые движки ну и еще есть нюансы. но вы можете переписать урл любый образом. как вам нравиться. нарпимер так: www.mysitecom/app/session/30qwihfdlh/go.html и возвращать его в понятное сервлет контейнеру состояния в фильтре до начала работы.

второй пункт... ну мы написали кастом таг который делает внутри url-rewriting и не только на самом деле таг делает очень много полезной работы а его использование не сложнее обычного <A>. так что простите второй довод откровенная ерунда - песьня о тупых ленивых кодерах smile

а насчет безопасности. ХЗ. может быть я не эксперт. но вы знаете, если человек не сможет купить плазменный телевизор за $3000 на магазине под нашим движком только из-за того что он параноик и у него отключены куки - нас повесят smile 
по нашим логам более 5% клиентов приходят без поддрежки куки = минус 5% продаж??? - наc повесят с особой жестокостью. smile 

И еще. черные списки на уровне App servera? да я не хочу не то чтобы App server пытался бороться с атаками, я не хочу чтобы даже мой HTTP сервер получал подобный реквесты. вся гадость обязана отсекаться еще на уровне IP пакетов до того как я начал тратить ресурсы сервера где запущено мое приложение на анализ подобных реквестов. аппаратный фаервол выдержит нагрузку на 2 порядка больше чем самый оптимальный сервлет контейнер. да и умеею они в вопросах защиты ну очень много (там даже всякий статистический анализ фуззи логика и эвристика). некоторую оптимизацию можно делать (хотя хи хи некоторые краулеры умеют куки и грамотно юзают сессии. очень грамотно.) но только как дополнение к защите более "низкого" уровня. 

Это сообщение отредактировал(а) ALKS - 9.5.2006, 11:11
PM   Вверх
UnicornMirage
Дата 10.5.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



большое спасибо за информацию smile Вы хорошо поняли мои мысли..
такой вопрос - а если делать сессию по IP - можно ли?  
PM MAIL   Вверх
ALKS
Дата 10.5.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



ну ты же сам создаеш сессию в сервлете. сам и решай когда ее создавать а когда нет. напрмер вычитваеш IP из заголовка запроса и решаеш smile 
PM   Вверх
Stampede
Дата 10.5.2006, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(ALKS @  10.5.2006,  09:08 Найти цитируемый пост)
ну ты же сам создаеш сессию в сервлете. сам и решай когда ее создавать а когда нет. напрмер вычитваеш IP из заголовка запроса и решаеш smile


Не совсем понятно, что имеется в виду. UnicornMirage ведь говорит о том, чтобы создавать сессию, привязываясь к IP как средству идентификации клиента. Насколько я знаю, в Servlets API такого не предусмотрено, и тому есть веские причины.

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

Что еще хуже, это если из одной внутренней сетки придут несколько разных человек: внешний адрес-то (как он видится для сервера) у них будет один и тот же! Скажем, в университетской сетке какой-нибудь добропорядочный препод зашел в магазин прикупить детям подарков к новому году, набрал кучу ништяков, оплатил и пошел дальше по своим делам. И тут в магазин заходит студень - лоботряс и двоечник. Смотрит - хопа, а его принимают за профессора. Вот уж он нарадуется smile

Я. конечно, маленько утрирую: собственно оплата в нормальном магазине должна идти по HTTPS, но ты понял, к чему я клоню: IP как средство идентификации клиента ни в дугу не годится.
 
PM WWW   Вверх
Stampede
Дата 10.5.2006, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



А с ALKS у нас вообще с разных позиций разговор получается: он говорит как разработчик магазина, а я - как вебмастер.

Цитата(ALKS @  9.5.2006,  01:57 Найти цитируемый пост)
понятно вполне, что имееться под UGLY urls smile плохо например то что такие урлы не любят многие поисковые движки ну и еще есть нюансы. но вы можете переписать урл любый образом. как вам нравиться. нарпимер так: www.mysitecom/app/session/30qwihfdlh/go.html и возвращать его в понятное сервлет контейнеру состояния в фильтре до начала работы.


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

Ну а самая ж*па - это если ты такие урлы поисковикам скормишь. Долго будешь потом удивляться, почему к тебе никто попасть не может smile

Ну и по остальным позициям примерно такая же петрушка. Для тебя 5 процентов недопродаж - это катастрофа, а для просто вебмастера - пшик. Ну пришел параноик, и бог с ним, болезным. Никто ведь его не гонит. Пусть себе ходит, глазеет по сторонам. А что зарегиться не может - ну и пофиг, его проблемы.

Ну или вот ты говоришь фаервол. Его ведь тоже конфигурять нужно, администрить. Но самое главное: он же не может передать инфу в сервлет. А фильтр - может! Сколько чего нароет, столько и напихает в атрибуты запроса.

Так штаа... smile 
PM WWW   Вверх
ALKS
Дата 10.5.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



Цитата(Stampede @ 10.5.2006,  19:10)
Цитата(ALKS @  10.5.2006,  09:08 Найти цитируемый пост)
ну ты же сам создаеш сессию в сервлете. сам и решай когда ее создавать а когда нет. напрмер вычитваеш IP из заголовка запроса и решаеш smile


Не совсем понятно, что имеется в виду. UnicornMirage ведь говорит о том, чтобы создавать сессию, привязываясь к IP как средству идентификации клиента. Насколько я знаю, в Servlets API такого не предусмотрено, и тому есть веские причины.

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

Что еще хуже, это если из одной внутренней сетки придут несколько разных человек: внешний адрес-то (как он видится для сервера) у них будет один и тот же! Скажем, в университетской сетке какой-нибудь добропорядочный препод зашел в магазин прикупить детям подарков к новому году, набрал кучу ништяков, оплатил и пошел дальше по своим делам. И тут в магазин заходит студень - лоботряс и двоечник. Смотрит - хопа, а его принимают за профессора. Вот уж он нарадуется smile

Я. конечно, маленько утрирую: собственно оплата в нормальном магазине должна идти по HTTPS, но ты понял, к чему я клоню: IP как средство идентификации клиента ни в дугу не годится.

ну это все очевидно smile более милиона пользователей аналогового доступа в нет немецкого провайдера AOL ходят с 4х IP-ов smile 
я не внимательно прочел вопрос. я думал он спрашивает в контексте DOS атак smile ну т.е. каким образом НЕ создавать сессию если IP не нравиться.

Цитата(Stampede @ 10.5.2006,  19:41)
А с ALKS у нас вообще с разных позиций разговор получается: он говорит как разработчик магазина, а я - как вебмастер.

Цитата(ALKS @  9.5.2006,  01:57 Найти цитируемый пост)
понятно вполне, что имееться под UGLY urls smile плохо например то что такие урлы не любят многие поисковые движки ну и еще есть нюансы. но вы можете переписать урл любый образом. как вам нравиться. нарпимер так: www.mysitecom/app/session/30qwihfdlh/go.html и возвращать его в понятное сервлет контейнеру состояния в фильтре до начала работы.


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

Ну а самая ж*па - это если ты такие урлы поисковикам скормишь. Долго будешь потом удивляться, почему к тебе никто попасть не может smile

Ну и по остальным позициям примерно такая же петрушка. Для тебя 5 процентов недопродаж - это катастрофа, а для просто вебмастера - пшик. Ну пришел параноик, и бог с ним, болезным. Никто ведь его не гонит. Пусть себе ходит, глазеет по сторонам. А что зарегиться не может - ну и пофиг, его проблемы.

Ну или вот ты говоришь фаервол. Его ведь тоже конфигурять нужно, администрить. Но самое главное: он же не может передать инфу в сервлет. А фильтр - может! Сколько чего нароет, столько и напихает в атрибуты запроса.

Так штаа... smile

не правда smile за все апп серверы говорить не буду. но наш JRun получив запрос с номером несушествующей сессии просто создает новую сессию с этим номером. так что запрос останеться абсолютно 
"живым". 

нормальные поисковики кстати умеют куки и все эти линки с сессиями не попадают туда. 

по поводу фильтра смотри. сначала твой HTTP сервер должен получить запрос и перенаправить его твоему сервлет контейнеру. потом сервлет контейнер должен его преврать в объект HttpRequest и передать фильтру. это очень много работы которая отъедает ресурсы твоего вэб сервера. ещё до того как твой фильтр заработал. так что любаай серьезная атака вынесет твой вэб сервер на два порядка быстрее чем фаерфолл который делает фильтрацию на гораздо более низком уровне затрачивая намного меньше аппаратных ресурсов кроме того я хотел бы посмотреть на сервлетный фильт в полной мере реализуюшил логику интелектульного обнаружения распределенных дос атак. это будет фильтр километровой длины и работать будет с сответсвующей скоростью )

да фаер надо конфенурить. но это не проблемма разработчика вэб приложения. это проблемы администраторов их спец обородования и снец софта и они это сделают гораздо эфективнее. не нужно брать на себя не свою работу.
да фаер не может передать инфу вэб приложению. но дело то в том что я и не хочу эту инфу получать! я хочу чтобы со злом разобрались не то что до моего вэб приложения но даже до моего вэб сервера.

ну магазин не магазин но за посетителей надо бороться. smile в конце концов они - наши деньги. и я не хочу терять поситителей изза такой ерунды как отсутсвие куки smile
5% это 10000 EUR продажного оборота в сутки для вэб магазина бытовой электроники средне-мелкого размера... так что думайте сами...
 
PM   Вверх
Stampede
Дата 11.5.2006, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(ALKS @  10.5.2006,  13:59 Найти цитируемый пост)
да фаер надо конфенурить. но это не проблемма разработчика вэб приложения. это проблемы администраторов их спец обородования и снец софта и они это сделают гораздо эфективнее. не нужно брать на себя не свою работу.


Вот я и говорю: разная у нас аксиоматика smile

То, что хорошо для магазина, не всегда годится для информационного вебсайта, и наоборот: разные цели, разные требования, своя специфика, свои особенности трафика и пр. В общем, универсальных рецептов нет, а то, что мы тут написали, пусть послужит в качестве guidelines.

 
PM WWW   Вверх
UnicornMirage
Дата 11.5.2006, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



Цитата
то, что мы тут написали, пусть послужит в качестве guidelines.


да, большое спасибо, я читал все посты с большим наслаждением. поставил бы + если бы мог. smile 
позвольте тогда еще околотемный вопрос - если я хочу контроллировать список созданных HttpSession (для статистики и т.п.) - какой существует вариант еще кроме самописного листенера на базе HttpSessionListener? я уже давно бьюсь над этой задачей (самописный листенер я уже давно реализовал) - найти механизмы через сам сервлет-контейнер - но пока не нашел.. вообще стоит ли продолжать исследования в этой области либо это бесполезная задача? 
PM MAIL   Вверх
pvo1
Дата 11.5.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.4.2006

Репутация: нет
Всего: нет



UnicornMirage, в томкате можно реализовать свой SessionManager. 
PM MAIL   Вверх
ALKS
Дата 11.5.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



эм... собственно где угодно можно реализовать свой SessionManager можно даже свой апп сервер написать только зачем? да и справитесь ли? smile

и вообще что значит "контроллировать список созданных HttpSession" чего ты хочеш добиться? 
PM   Вверх
UnicornMirage
Дата 11.5.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



Цитата
и вообще что значит "контроллировать список созданных HttpSession" чего ты хочеш добиться? 


хочу сделать статистику на сайте для админов - чтобы видеть в виде таблицы список всех сессий и их атрибутов..
ps: я уже сделал ее как говорил выше с помощью HttpSessionListener - но мне показалось что повторно сохранять объекты HttpSessions в своем Map возможно не эффективно т.к. они уже хранятся в сервлет-контейнере.. ведт извлекаются же они по ключу Request.getSession(key) ?  
PM MAIL   Вверх
ALKS
Дата 11.5.2006, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



ну... я не очень понимаю зачем нужна статистика о существующих в данный момент сессиях... при хорошем трафике их будет десятки тысяч и что тебе это километровый список даст? но в принципе - нормальный путь. smile я бы не заморачивался ничем иным.
переписывать ключевые классы сервлет контейнера настоятельно не рекомендуеться. предполагаеться что сам контейнер имеет там массу хитростей и оптимизации и "не испортить" будет не просто... 
PM   Вверх
pvo
Дата 12.5.2006, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 5
Всего: 7



Цитата(ALKS @  11.5.2006,  11:16 Найти цитируемый пост)
эм... собственно где угодно можно реализовать свой SessionManager можно даже свой апп сервер написать только зачем? да и справитесь ли?


Запросто smile Нужно тока чуть-чуть свободного времени и немного денех за написание сервера smile
Цитата(UnicornMirage @  11.5.2006,  12:16 Найти цитируемый пост)
но мне показалось что повторно сохранять объекты HttpSessions в своем Map возможно не эффективно т.к. они уже хранятся в сервлет-контейнере

Зависит от числа сессий - если их сотни или даже тысячи - то будет экономия на спичках - ведь повторно сохраняются-то не сами сессии, а ссылки на них. Когда у меня стояла задача показывать список активных сессий, я делал как раз SessionsListener. А SessionManager переписывал просто ради интереса.  
Цитата(ALKS @  11.5.2006,  13:38 Найти цитируемый пост)
переписывать ключевые классы сервлет контейнера настоятельно не рекомендуеться

Не согласен. Иногда нужно переписать, например, класслоадер. Это довольно-таки ключевой класс, имхо. Переписывался и работает замечательным образом.
Если имеются в наличии исходники, то посмотреть на хитрости и оптимизацию не составляет труда - для того, чтобы их не испортить. Только вот штука какая - нет там особых хитростей. И оптимизации тоже smile По крайней мере, в томкате.
 
PM MAIL ICQ   Вверх
UnicornMirage
Дата 14.5.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



Цитата
 Когда у меня стояла задача показывать список активных сессий, я делал как раз SessionsListener. А SessionManager переписывал просто ради интереса. 


поделитесь пожалуйста ссылкой или наводящими словами, потому что SessionManager - это ключевая часть вопроса для меня. как Вы переписывали SessionManager? наверняка пользовались в качестве образца готовым решением? - не подскажите откуда копать?
заранее огромное спасибо!!

  

Это сообщение отредактировал(а) UnicornMirage - 14.5.2006, 12:59
PM MAIL   Вверх
pvo
Дата 14.5.2006, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 5
Всего: 7



UnicornMirage, вот ссылка.
Я писал наследника от StandardManager.
Тебе еще понадобятся исходники томката - чтобы было понятнее, что делается внутри SessionManager. Документация и javadocs по томкату не всегда актуальны.  
PM MAIL ICQ   Вверх
UnicornMirage
Дата 15.5.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



pvo, большое спасибо за ссылку!
хотя я использую Resin, наверное в TomCat это реализовано похоже.. хм.. может мне перейти на TomCat? smile
 
PM MAIL   Вверх
ALKS
Дата 15.5.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



Цитата(pvo @ 12.5.2006,  00:02)

Не согласен. Иногда нужно переписать, например, класслоадер. Это довольно-таки ключевой класс, имхо. Переписывался и работает замечательным образом.
Если имеются в наличии исходники, то посмотреть на хитрости и оптимизацию не составляет труда - для того, чтобы их не испортить. Только вот штука какая - нет там особых хитростей. И оптимизации тоже smile По крайней мере, в томкате.

smile ну Тоmcat эталоном никогда не был. и даже скорее наооборот. 
но всё ранво - брать на себя работу Апп cервера  - путь порочный... 
PM   Вверх
pvo
Дата 15.5.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 5
Всего: 7



Цитата(ALKS @  15.5.2006,  10:29 Найти цитируемый пост)
smile ну Тоmcat эталоном никогда не был. и даже скорее наооборот. 


где-то в сети видел сравнения производительности сервлет-контейнеров - участвовали томкат, резин, ЖиРан, Джетти. Версия томката - 5.0.х, остальных - не помню, но очевидно, что не самые древние. Так вот томкат был среди лидеров. И по распространенности он как-то бьет всех остальных. Так что, де факто  он как раз эталон.

Цитата(ALKS @  15.5.2006,  10:29 Найти цитируемый пост)
но всё ранво - брать на себя работу Апп cервера  - путь порочный...  


Писать программы - тоже путь порочный - в них обычно есть ошибки smile И потом, тут не идет речи о реализации своего менеджера транзакций или jms, а о реализации менеджера сессий, который тривиален.
 
PM MAIL ICQ   Вверх
UnicornMirage
Дата 15.5.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



Вы знаете, мне просто интересно разобраться с менеджером стало - это все в контексте моей простенькой задачи - отобразить список активных сессий... На готовый коммерческий продукт я даже и в помыслах не помышляю - это научно-практический интерес и любопытство. 
 
PM MAIL   Вверх
pvo
Дата 15.5.2006, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 5
Всего: 7



Цитата(UnicornMirage @  15.5.2006,  10:18 Найти цитируемый пост)
... хотя я использую Resin ...


Тшорт, что-то я про Resin то и забыл smile сорри 
PM MAIL ICQ   Вверх
UnicornMirage
Дата 15.5.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



да нет, ничего smile наоборот - может это наконец подстрекнет меня обратить мой консервативный взор в сторону томката, который хвалят все вокруг...
я наверное помешан на оптимизации (по производительности) и мне все почему то до этого казалось что томкат медленнее резина... может этот факт заставил меня выбрать последний. тем не менее то что исходники томката открыты - очень привлекло!  
PM MAIL   Вверх
pvo
Дата 15.5.2006, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 5
Всего: 7



PM MAIL ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0931 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.