none
Confusão de sessão RRS feed

  • Pergunta

  • Bom dia, pessoal!

    Até onde sabemos, sessões (independente do mecanismo de gravação) são conjuntos únicos de valores para cada SessionID. Acontece que em alguns casos de sobrecarga da aplicação web e após reiniciar a pool, usuários relataram que receberam informações referentes a outros usuários (nomes, endereço etc). O mais curioso é que são usuários de locais diferentes que nunca teriam acessado a conta das informações que supostamente foram mostradas, portanto é impossível que fossem dados de cache.
    Até onde pesquisei, encontrei menção de casos parecidos, mas nenhuma resposta satisfatória no sentido de dizer se isto realmente pode ser um problema do ASP.NET e como evitar (ou resolver).

    Alguém já viu uma situação como esta?

    ATT
    terça-feira, 24 de outubro de 2017 10:46

Respostas

  • Desculpem pela falta de retorno. Acabei descobrindo que realmente havia um problema em um ponto da aplicação onde a sessão é manipulada. Claro que só podia ser isto. Jamais haveria um erro deste tipo no Asp.NET.

    Obrigado!
    terça-feira, 31 de outubro de 2017 15:17
  • Não vi essa situação especificamente, no entanto o problema pode ser outro.

    Exemplo: você guarda informações em cookies. Esses cookies tem uma mesma "tag" ou nome, ou valor ... então 2 usuários que tenham usado o mesmo PC por exemplo, poderão vir a submeter os mesmos cookies e consequentemente receber a mesma informação.

    Outra situação é no uso de variáveis "static" (C# - ou "shared" em VB). Ao contrário do que pode parecer, variáveis "static" NÃO SÃO SEGMENTADAS POR SESSÃO - ou seja, essa declaração:

    public class Abc
    {
        public static string MeuTexto = "Eu sou estático";
    }

    Estará disponível para todas as sessões e elas visualizarão os mesmos valores. Então se a SessionID (1) alterar o valor de "MeuTexto" para "Sammuel" a SessionID (2) ao ler a varíavel verá "Sammuel" e não "Eu sou estático".

    Então vale revisar a informação que os usuários relataram receber; se for algo que você armazenou em um cookie ou em uma variável compartilhada ("static"/"shared") durante um processamento qualquer. Fora isso, tudo que for referente a sessão deve ser armazenado no objeto "Session", e até então não vi nenhum caso de troca de informações entre 2 Sessions diferentes.

    terça-feira, 24 de outubro de 2017 12:14
  • Bom dia,

    Como são em máquinas/navegadores separados, talvez algum proxy esteja "cachiando" no meio da requisição. Ja verificou se tem alguma classe estática sendo usada para isso.

    Tenta colocar o  cache privado no iis ou na propria página asp.net

    1. 1.     Open your IIS Manager, navigate to the level you want to manage.
    2. 2.     In Features View, Double click “HTTP Respond Headers” feature.
    3. 3.     Click “Add…” on the Actions Panel

     Fill in the pop-up window:

    Name: Cache-Control

    Value: private

    fonte


    terça-feira, 24 de outubro de 2017 12:18
    Moderador

Todas as Respostas

  • Não vi essa situação especificamente, no entanto o problema pode ser outro.

    Exemplo: você guarda informações em cookies. Esses cookies tem uma mesma "tag" ou nome, ou valor ... então 2 usuários que tenham usado o mesmo PC por exemplo, poderão vir a submeter os mesmos cookies e consequentemente receber a mesma informação.

    Outra situação é no uso de variáveis "static" (C# - ou "shared" em VB). Ao contrário do que pode parecer, variáveis "static" NÃO SÃO SEGMENTADAS POR SESSÃO - ou seja, essa declaração:

    public class Abc
    {
        public static string MeuTexto = "Eu sou estático";
    }

    Estará disponível para todas as sessões e elas visualizarão os mesmos valores. Então se a SessionID (1) alterar o valor de "MeuTexto" para "Sammuel" a SessionID (2) ao ler a varíavel verá "Sammuel" e não "Eu sou estático".

    Então vale revisar a informação que os usuários relataram receber; se for algo que você armazenou em um cookie ou em uma variável compartilhada ("static"/"shared") durante um processamento qualquer. Fora isso, tudo que for referente a sessão deve ser armazenado no objeto "Session", e até então não vi nenhum caso de troca de informações entre 2 Sessions diferentes.

    terça-feira, 24 de outubro de 2017 12:14
  • Bom dia,

    Como são em máquinas/navegadores separados, talvez algum proxy esteja "cachiando" no meio da requisição. Ja verificou se tem alguma classe estática sendo usada para isso.

    Tenta colocar o  cache privado no iis ou na propria página asp.net

    1. 1.     Open your IIS Manager, navigate to the level you want to manage.
    2. 2.     In Features View, Double click “HTTP Respond Headers” feature.
    3. 3.     Click “Add…” on the Actions Panel

     Fill in the pop-up window:

    Name: Cache-Control

    Value: private

    fonte


    terça-feira, 24 de outubro de 2017 12:18
    Moderador
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 30 de outubro de 2017 16:10
    Moderador
  • Desculpem pela falta de retorno. Acabei descobrindo que realmente havia um problema em um ponto da aplicação onde a sessão é manipulada. Claro que só podia ser isto. Jamais haveria um erro deste tipo no Asp.NET.

    Obrigado!
    terça-feira, 31 de outubro de 2017 15:17