|
|
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
Добрый день, Обнаружил, что в моем приложении при пересоздании сессии новая получает такой же id, как у старой. Попробовал сделать простенький пример, вот такая jsp-страница: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Закрываю-открываю браузер, при первой загрузке страницы значения разные(id поменялся), после - сколько F5 ни нажимай, значения совпадают. Пример запускаю на Tomcat 6.0.35. Нормально ли это и можно ли как-то этого избежать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2013, 18:13:38 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
abc_daЗакрываю-открываю браузер, при первой загрузке страницы значения разные(id поменялся), после - сколько F5 ни нажимай, значения совпадают. Пример запускаю на Tomcat 6.0.35.В логе апача есть повторные обращения? "F5" - это указание "обновить страницу, если она устарела". Без дополнительных усилий браузер, весьма вероятно, достаёт страницу из кэша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2013, 18:29:45 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Firebug'ом видно, что не из кэша. Чтобы исключить сомнения, добавил вот такую строчку в приведенный выше тестовый jsp: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2013, 18:37:48 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
Я бы ещё как-то понял ситуацию "отлаживаю чужое приложение", но для собственного сервера - в чём проблема глянуть в его лог? Есть ведь и условные запросы и статус 305 - Not Modified . Кроме того, очень странно в рамках одного запроса и создать и инвалидировать сессию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2013, 18:46:33 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov 3054 - Not Modified ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2013, 18:47:49 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Прошу прощения, видимо, я не достаточно четко описал ситуацию. Смотрю под отладчиком: Код: java 1. 2. 3. 4. Я предположил, что в моем приложении ошибка и создал тестовый пример(jsp из первого поста), но оказалось, что и в нем описанное мной поведение воспроизводится. Возник вопрос: насколько такое поведение нормально и можно ли с ним бороться? >Кроме того, очень странно в рамках одного запроса и создать и инвалидировать сессию. Замысел был в том, чтобы изменить id сессии. Если это должно делается иначе, подскажите, пожалуйста, как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 13:09:53 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
abc_daДобрый день, Обнаружил, что в моем приложении при пересоздании сессии новая получает такой же id, как у старой... ...Нормально ли это и можно ли как-то этого избежать? При инвалидации сессии происходит всего лишь анбайндинг аттрибутов и объектов, ассоциированных с ней. Сам инстанс сессии не удаляется и, грубо говоря, никакой JSR не заставляется реализации контейнеров сервлетов принудительно удалять его. Механизмы работы с сессией описаны в главе 7 Session JSR 315: Java Servlet 3.0 Specification . Ваш вопрос освещён в 7.2 Creating a Session . Если вам действительно нужно избавиться от идентификатора сессии попробуйте "очистить" куки на сервере, предварительно ознакомившись с главой 7.1 Session Tracking Mechanisms того же JSR. Гарантии нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 15:40:54 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
dmitriyche, спасибо за ссылку. Прочитал, действительно гарантий никаких не дается относительно уникальности идентификатора. В таком случае, переформулирую вопрос: Стоит задача в определенный момент изменить идентификатор сессии клиента, как это можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 17:18:44 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
abc_dadmitriyche, спасибо за ссылку. Прочитал, действительно гарантий никаких не дается относительно уникальности идентификатора. В таком случае, переформулирую вопрос: Стоит задача в определенный момент изменить идентификатор сессии клиента, как это можно сделать?Я на 100% уверен, что настоящая задача звучит иначе, а вы решили, что надо это делать через изменение идентификатора сессии. Абстрагируйтесь от этого идентификатора, и скажите, чего на самом деле необходимо достичь. Вам надо для каждой новой сессии иметь некий уникальный идентификатор, верно? Если да, то во время создания новой сессии просто запихните в нее какой-нибудь UUID. и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 17:53:45 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
abc_da, Если у вас сессия трекается через куки dmitriyche...Если вам действительно нужно избавиться от идентификатора сессии попробуйте "очистить" куки на сервере, предварительно ознакомившись с главой 7.1 Session Tracking Mechanisms того же JSR. Гарантии нет. вот вам ликн ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 18:05:20 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
iMove... Вам надо для каждой новой сессии иметь некий уникальный идентификатор, верно? Если да, то во время создания новой сессии просто запихните в нее какой-нибудь UUID. и все. Существует понятие "новой" сессии: Глава 7.2 Creating a SessionA session is considered “new” when it is only a prospective session and has not been established. Because HTTP is a request-response based protocol, an HTTP session is considered to be new until a client “joins” it. A client joins a session when session tracking information has been returned to the server indicating that a session has been established. Until the client joins a session, it cannot be assumed that the next request from the client will be recognized as part of a session. The session is considered to be “new” if either of the following is true: - The client does not yet know about the session - The client chooses not to join a session. These conditions define the situation where the servlet container has no mechanism by which to associate a request with a previous request. A Servlet Developer must design his application to handle a situation where a client has not, can not, or will not join a session. Также следует помнить, что сервлет контейнет создаёт сессию. В общем, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 18:19:15 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
Да, сессия трекается через куки. iMoveЯ на 100% уверен, что настоящая задача звучит иначе, а вы решили, что надо это делать через изменение идентификатора сессии. Стоит задача защититься от атаки типа Фиксация сессии . Как я себе понимаю, для этого необходимо принудительно поменять идентификатор сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 19:02:09 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
abc_daСтоит задача защититься от атаки типа Фиксация сессии . Как я себе понимаю, для этого необходимо принудительно поменять идентификатор сессии.Нет, не нужно. P.S. Уже есть реальный пример взлома или занимаетесь преждевременной оптимизацией? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 19:32:12 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
abc_daСтоит задача защититься от атаки типа Фиксация сессии. http://www.tomcatexpert.com/blog/2011/04/25/session-fixation-protection авторSession fixation protection is turned on by default in all Apache Tomcat 7 versions and from Apache Tomcat 6.0.21 on. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 21:34:06 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovУже есть реальный пример взлома или занимаетесь преждевременной оптимизацией? Реального примера нет, есть требование. календаревед, спасибо за ссылку. Похоже, это как раз то, что нужно использовать. Попробую придумать, как прикрутить это к своему приложению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 13:21:18 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
К сожалению, прикрутить описанное выше решение не получилось. Возвращаясь к примеру из моего первого поста, обнаружилось, что описанное поведение наблюдается только если в server.xml установлен параметр emptySessionPath="true" . В документации связи между этим параметром и неменяющимся идентификатором сессии я не нашел. Возможно, у кого-то есть мысли, почему так выходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2013, 19:15:55 |
|
||
|
id сессии не меняется после инвалидации
|
|||
|---|---|---|---|
|
#18+
Оказалось, нужно было повнимательнее погуглить. В доке к томкату нашел фразу: "A side effect to setting this to true, is that if Tomcat creates a new session it will attempt to use the cookie session id if supplied by the client.". Соответственно, выходит, при инвалидации и пересоздании сессии в рамках одного запроса новая сессия всегда будет получать идентификатор от старой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2013, 19:30:15 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38346407&tid=2128876]: |
0ms |
get settings: |
18ms |
get forum list: |
28ms |
check forum access: |
9ms |
check topic access: |
9ms |
track hit: |
79ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
113ms |
get tp. blocked users: |
3ms |
| others: | 301ms |
| total: | 591ms |

| 0 / 0 |
