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
Um proxy pode atrapalhar o funcionamento de session?
8 Respostas
Se o proxy tiver fazendo besteira com cookies sem dúvida.
Isso é perigoso demais então. Eu não posso ter garantia de segurança. Como podemos contornar isso?
Não use cookies para controlar a sessão.
mas até onde sei as sessões usam cookies internamente. ou seja, gravam um cookie no cliente (caso o browser suporte)
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
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
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
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.