Cookies de sessão do Firefox

105

De um modo geral, ao receber um cookie que não tem período de expiração, os navegadores modernos consideram esse cookie como um 'cookie de sessão', removendo o cookie no final da sessão de navegação (geralmente quando a instância do navegador fecha).

IE, Opera, Safari e Chrome suportam esse comportamento.

No entanto, o firefox (versão 3.0.9 mais recente) parece não seguir esta regra, pelo que posso dizer que não expira os cookies quando o navegador é fechado ou quando o usuário faz logoff ou reinicia o sistema operacional.

Então, por que o firefox se refere a eles como cookies de sessão, quando eles duram aparentemente indefinidamente?

Alguém sabe como o Firefox lida com a expiração de cookies de sessão?

meandmycode
fonte
1
Eu não acho que isso foi realmente respondido. Eu também estou vendo isso.
bhollis
Obrigado BRH por sua pesquisa, eu realmente vi sua resposta e queria verificar sua pesquisa antes de marcar sua resposta, esqueci completamente! desculpas
meandmycode

Respostas:

116

Aparentemente, isso ocorre por design. Verifique este bug do Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=443354

O Firefox tem um recurso onde você fecha o Firefox e oferece para salvar todas as suas guias, e então você restaura o navegador e essas guias voltam. Isso é chamado de restauração de sessão. O que eu não percebi é que ele também restaurará todos os cookies de sessão para essas páginas! Ele trata como se você nunca tivesse fechado o navegador.

Isso faz sentido no sentido de que, se seu navegador travar, você voltará para onde estava, mas é um pouco desconcertante para desenvolvedores da web acostumados a limpar os cookies de sessão. Eu tenho alguns cookies de sessão antigos de meses atrás que foram definidos por sites que sempre abro em guias.

Para testar isso, feche todas as guias do navegador, feche o navegador e reinicie-o. Acho que os cookies de sessão do seu site devem ser apagados nesse caso. Caso contrário, você teria que desligar a restauração da sessão.

bhollis
fonte
1
Acho esse comportamento bastante questionável, obrigado pela sua pesquisa. Se "Salvar e Sair" for selecionado ou "Restaurar abas e janelas", ao fechar o navegador, todos os cookies da sessão permanecem intactos. A única maneira do "usuário" se livrar deles é primeiro fechar a (s) guia (s) e, em seguida, fechar o navegador.
marcar
Você já encontrou uma solução alternativa? Eu realmente não quero que o Firefox desenterre sessões antigas, pois preciso que o ID da sessão em meu aplicativo seja exclusivo.
ArjanP
Desculpe, não sei de uma solução alternativa. Da perspectiva do seu aplicativo, o navegador nunca fecha.
bhollis
6
Observei
Steve Clay
Eu fui mordido por esse comportamento hoje também. Achei que havia algo errado com meu aplicativo. Então eu testei o Chrome e outros navegadores, e descobri que o Firefox é o culpado.
Dingle
5

Duas ideias:

  1. Você tem um problema com o seu gerenciador de sessão (aquele incluído no FF3 ou um incluído em uma extensão, como tabmixplus)
  2. Use Firebug + FireCookie ( https://addons.mozilla.org/en-US/firefox/addon/6683 ) para depurar!
Mapear
fonte
3

Isso deve funcionar. Eu costumava ser um dos testadores do módulo de cookie e não acho que haja qualquer razão de design para que isso se comportasse de maneira diferente (embora se você travar, os cookies de sessão podem ser projetados para permanecerem vivos quando você reiniciar ...)

Você está visualizando os cookies no menu "Preferências"> guia "Privacidade"> botão "Mostrar Cookies ..."?

Além disso, você tentou um novo perfil?

Benc
fonte
Muito estranho, estou relativamente feliz se isso for apenas um bug com os dois sistemas em que testei .. Eu vi os cookies e eles sobrevivem a qualquer coisa .. e eles estão absolutamente sendo classificados como cookies de sessão pelo firefox .. o as únicas opções que eu mudei no firefox é desligar e ligar o javascript .. meus plug-ins instalados são o firebug e a barra de ferramentas do desenvolvedor web .. ah, parabéns mesmo.
meandmycode
Também há uma variedade de preferências de módulo de cookie, mas não me lembro de nenhuma delas com esse tipo de funcionalidade. FF3 mudou de um arquivo de texto para um banco de dados de cookies, talvez seu banco de dados tenha se comportado mal.
benc
2

Eu discordo do meandmycode acima.

A especificação HTTP https://www.ietf.org/rfc/rfc6265.txt fala sobre o que um cliente deve fazer com cabeçalhos Set-Cookie com Expires:

Se o servidor desejar que o agente do usuário persista o cookie em várias "sessões" (por exemplo, reinicialização do agente do usuário), o servidor pode especificar uma data de expiração no atributo Expires. Observe que o agente do usuário pode excluir o cookie antes da data de expiração se o armazenamento de cookies do agente do usuário exceder sua cota ou se o usuário excluir manualmente o cookie do servidor.

A extensão lógica disso é que a ÚNICA maneira de o servidor exigir que o navegador não mantenha um Cookie na saída é não definir nenhum valor de Expires (ou seja, um cookie de sessão). Se um navegador não respeitar essa semântica, ele não estará honrando a resposta do servidor.

Essencialmente, o agente do usuário está decidindo ignorar a solicitação do servidor e agir como se um valor Expires tivesse sido definido.

Neill Robbins
fonte
1

Isso é um pouco preocupante em ambientes de usuários compartilhados. Se eu definir um cookie de autenticação que está definido para expirar no final da sessão. Isso persistirá no Firefox depois que o navegador for fechado e outro usuário iniciar o Firefox. Os cookies são definidos com uma data de validade por um motivo!

Jason
fonte
1
Bem, para ser justo em relação a "Cookies são configurados com uma data de expiração por um motivo" - neste cenário, você não está definindo uma data de expiração, então cabe ao navegador decidir quanto tempo aquele cookie dura.
meandmycode
0

Estou desconcertado que a Mozilla tenha deixado isso como está por vários anos.

OK .. então eu saio do FF e desligo o PC. No dia seguinte, o FF inicia e abre o último conjunto de páginas (recurso útil e interessante) MAS ele restaura as sessões e eu estou conectado novamente a sites que não possuem o recurso "salvar minhas configurações". Eu sei porque são sites que eu construí. Tudo o que faço com as configurações do php ini, as sessões são restauradas.

Eles absolutamente não devem ser restaurados. Páginas sim, mas sessões com cookie ini definidas como '0' não.

Não entendo por que isso não é sinalizado como uma falha de segurança. Claro que posso fazer algumas verificações adicionais no lado do servidor, para ver se um login deve ser permitido, com base na hora desde o último login, mas não deve ser necessário.

Uma sessão NÃO deve persistir. O FF está manipulando as configurações de expiração do cookie.

anoldermark
fonte
-1

Bem, é desconcertante para mim. Meu sistema está configurado para que os usuários possam clicar em SAIR, destruindo todos os cookies de sessão. Mas se um usuário fechar o navegador sem realmente escolher Sair, gostaria que os cookies da sessão fossem apagados.

Na verdade, testei com o Google Chrome, IE 9, e funciona bem. Mas o Firefox está relutante em eliminar esses cookies de "sessão" (conforme relatado pelo Firebug).

ESTÁ BEM. Isso é o que eu fiz. Escolhi Sair do menu principal do FireFox e, a partir daí, funcionou como esperado (não sei por quê).

jdisla
fonte