Um proxy pode atrapalhar o funcionamento de session?

8 respostas
leomc

Alguns usuários meus estão reclamando que estariam tendo acessos a dados de outros usuários atrás do mesmo proxy. Eu pensoi que isso não faz sentido, mas…
É possível um usuário ter acesso a informações da sessão de outro usuário? isso em computadores difefentes mas todos passando pelo mesmo proxy.
Utilizo o tomcat 4.1.27

8 Respostas

louds

Se o proxy tiver fazendo besteira com cookies sem dúvida.

leomc

Isso é perigoso demais então. Eu não posso ter garantia de segurança. Como podemos contornar isso?

_fs

Não use cookies para controlar a sessão.

leomc

mas até onde sei as sessões usam cookies internamente. ou seja, gravam um cookie no cliente (caso o browser suporte)

Luca

Olá

Não tenho experiência com problemas deste tipo no proxi mas em princípio não estou lá muito convencido de que a busca da solução do problema esteja toda aqui.

Nunca vi este problema. Mas se a mim coubesse a busca da solução gostaria de saber toda a arquitetura da rede e todos os componentes envolvidos. Coisas do tipo:[list]- Qual roteador?

  • Usa clusters?
  • Usa load balancers por software ou por hardware?
  • Usa algo como Cisco DistributedDirector (load distribution)? Neste caso verificou a configuração HTTP Session Redirector Mode?
  • Qual servidor proxi? O cache é de tamanho adequado? O cache está configurado para não guardar páginas com “?”
  • O proxi é transparente ou não?
  • Usa um redirecionador (tipo squim)? Como está o comando de redirecionamento regex?
  • Qual firewall? Há alguma regra pertinente? (pouco provável)
  • Qual web server? Usa virtual host?
  • Qual app server? (você já disse que é o tomcat 4.1.27).
  • Usa SSL?
  • Quando e como ocorre o problema?
  • Reusa sessions logo após o tomcat ser restartado? Para evitar coloque no server.xml:
<Context  .  .  .  .  .  .  reloadable="true">
  <Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>
</Context>
  • Suas páginas html usam frames? (atenção com isto qdo usa sessions)
  • Suas páginas html estão com “Cache-Control: max-age=0” ou com “Cache-Control: no-cache”. Algo mais ou menos assim:
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="must-revalidate">
<META http-equiv="Expires" content="0">
  • Há alguma possibilidade de erros no Java? É tudo thread safe? As sessões usam algum tipo de pool? Realmente não há interferências entre usuários simultâneos? (no mínimo, use uns System.out.println para debugar)
  • Todas os objetos sessions são serializáveis? [/list]Ou seja, verifique todas as partes.

Você não precisa me responder nada disto porque se assim fizesse estaria abrindo publicamente a segurança do seu site. Então faça um checklist mais ou menos assim e vá levantando onde pode estar o problema. Em último caso, o bom e velho tcpdump pode ajudar.

Depois nos diga aonde estava o problema.

[]s
Luca

L

Tem uma outra forma de gerenciar a sessão sem depender de cookies que é usando “URL rewriting”.

Consiste em reescrever todas as url que o cliente pode submeter com as funções do HttpServletResponse:

String encodeURL( String url )
String encodeRedirectURL( String url ) -> para ser usado com sendRedirect

esses carinhas adicionam o session ID na url, toda vez que o cliente submeter a sessão estará indicada.

flw

leomc

Acho que já achei os erros. Com as dicas do luca acho que já é possível resolver. Valeu mesmo luca.
Assim que tiver certeza que corrigi eu posto aqui problema/solução

yannickbh

Estou com este mesmo problemas… Os dados dos usuários estão sendo trocados… mas somente, qdo 2 ou mais usuários fazem o post no mesmo momento… Qual a solução para este problema?? Estou pensando em gravar os dados nos cookies do usuário, será q resolve?? vide o post http://www.guj.com.br/posts/list/0/117454.java onde expliquei e mostrei meu codigo.

obrigado.

Criado 1 de março de 2004
Ultima resposta 7 de fev. de 2009
Respostas 8
Participantes 6