| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2010 15:36:37
|
christiano.carrilho
What is classpath?
Membro desde: 21/05/2009 16:16:31
Mensagens: 5
Localização: Campo Grande, MS
Offline
|
Boa tarde pessoal,
Estou tentando controlar a sessão do usuário para evitar o "roubo" de sessão, ou seja, não permitir depois de logado que o usuário acesse o sistema em abas diferentes.
Andei lendo um monte de coisas na internet e muito gente diz que é impossível mas tem jeito de fazer uma solução manual que seria controlar na mão.
Por favor, alguém tem uma implementação, um exemplo, um algo que possa compartilhar.
Esse é um requisito de segurança num projeto que estou trabalhando, portanto, está difícil de convencer o usuário de que isso é impossível de controlar de maneira trivial.
Obrigado por hora.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2010 19:50:55
|
AbelBueno
Virtual Machine Man
Membro desde: 04/08/2010 09:37:57
Mensagens: 543
Offline
|
Por que a outra aba compartilhar os dados seria um roubo de sessão, se é o mesmo usuário que está utilizando?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/12/2010 13:54:39
|
maruero
JavaTeenager
![[Avatar]](/images/avatar/b252e54edce965ac4408effd7ce41fb7.jpg)
Membro desde: 21/08/2006 12:01:38
Mensagens: 174
Localização: Barueri
Offline
|
Olá Christiano,
Saudações Sul-Matogrossenses para você. Finalmente achei alguem da minha terra aqui no Forum.
Realmente, a solução mais fácil para solucionar o seu problema é convencer o seu cliente de que isso é a coisa mais natural em uma aplicação cliente/servidor com sessão.
Bom fora isso, você pode usar uma idéia de subsessão.
Deixa eu explicar melhor:
1 - Coloque tudo que você precisar manter na sessão em uma Classe, por exemplo MinhaSessão.
2 - Crie um HashMap de MinhaSessão e coloque-o na sessão real de seu ServidorWeb.
3 - Faça todas as suas requisições, originadas de todas as sua páginas exceto da Home, passando como parâmetro um SubSessionId que você pode criar como quiser.
4 - Na Home você não passa esse Id, e durante o processamento do request da Home, você cria esse Id, cria uma instancia do MinhaSessão, usa o id para incluir o MinhaSessão no HashMap, e devolva o id para suas páginas subsequentes sempre reenviá-lo nas próximas requisições.
5 - No processamento das outras páginas você usa o Id passado pelas páginas para obter o MinhaSessão do HashMap.
Pegou a idéia?
Dessa forma, se o usuário abrir uma nova aba e tentar entrar no sistema ele vai receber um novo Id com uma nova Sessão.
Só que se o usuário clicar em um de seus links com o botão direito e mandar abrir em uma nova aba ele irá utilizar o mesmo id e assim vai "roubar" a sessão, pois as duas abas vão usar o mesmo id.
Espero ter ajudado.
This message was edited 1 time. Last update was at 19/12/2010 15:01:05
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/12/2010 08:56:42
|
christiano.carrilho
What is classpath?
Membro desde: 21/05/2009 16:16:31
Mensagens: 5
Localização: Campo Grande, MS
Offline
|
AbelBueno wrote:Por que a outra aba compartilhar os dados seria um roubo de sessão, se é o mesmo usuário que está utilizando?
Bom dia,
Obrigado por responder.
Roubo de sessão foi o termo utilizado pelo cliente na descrição do requisito. Concordo que qdo o usuário faz o login é ele que está utilizando o sistema e portanto, qual o problema de abrir abas?
De qualquer forma preciso implementar algo para minimizar esse "problema"
Se tiver alguma ideia que possa compartilhar, desde já agradeço.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/12/2010 09:03:49
|
maruero
JavaTeenager
![[Avatar]](/images/avatar/b252e54edce965ac4408effd7ce41fb7.jpg)
Membro desde: 21/08/2006 12:01:38
Mensagens: 174
Localização: Barueri
Offline
|
Leu minha responsta anterior, com a idéia?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/12/2010 09:15:21
|
christiano.carrilho
What is classpath?
Membro desde: 21/05/2009 16:16:31
Mensagens: 5
Localização: Campo Grande, MS
Offline
|
maruero wrote:Olá Christiano,
Saudações Sul-Matogrossenses para você. Finalmente achei alguem da minha terra aqui no Forum.
Realmente, a solução mais fácil para solucionar o seu problema é convencer o seu cliente de que isso é a coisa mais natural em uma aplicação cliente/servidor com sessão.
Bom fora isso, você pode usar uma idéia de subsessão.
Deixa eu explicar melhor:
1 - Coloque tudo que você precisar manter na sessão em uma Classe, por exemplo MinhaSessão.
2 - Crie um HashMap de MinhaSessão e coloque-o na sessão real de seu ServidorWeb.
3 - Faça todas as suas requisições, originadas de todas as sua páginas exceto da Home, passando como parâmetro um SubSessionId que você pode criar como quiser.
4 - Na Home você não passa esse Id, e durante o processamento do request da Home, você cria esse Id, cria uma instancia do MinhaSessão, usa o id para incluir o MinhaSessão no HashMap, e devolva o id para suas páginas subsequentes sempre reenviá-lo nas próximas requisições.
5 - No processamento das outras páginas você usa o Id passado pelas páginas para obter o MinhaSessão do HashMap.
Pegou a idéia?
Saudações pantaneiras. E ai amigo? Obrigado pela atenção!
Peguei sim,
Tinha pensando em algo parecido com isso, tem tb o esquema de reescrita de URL que estou estudando.
Vou tentar implementar algo e se tiver alguma dúvida mando novamente.
Dessa forma, se o usuário abrir uma nova aba e tentar entrar no sistema ele vai receber um novo Id com uma nova Sessão.
Só que se o usuário clicar em um de seus links com o botão direito e mandar abrir em uma nova aba ele irá utilizar o mesmo id e assim vai "roubar" a sessão, pois as duas abas vão usar o mesmo id.
Espero ter ajudado.
|
|
|
 |
|
|
|
|