Diferenças entre cookies e sessões?

154

Estou treinando no desenvolvimento da Web e estou aprendendo sobre JSP e Servlets . Eu tenho algum conhecimento de HttpSession- eu usei em alguns dos meus projetos de amostra.

Nos navegadores, vi a opção de "excluir cookies". Se eu excluir os cookies, eles HttpSessiontambém serão excluídos .

Os cookies e a sessão são iguais? Quais são as diferenças entre eles?

Tigre preto
fonte
Consulte também esta pergunta: < stackoverflow.com/questions/356562/… > Especificamente, as observações sobre cookies assinados.
Joel Coehoorn
Eu acho que a segunda resposta a esta pergunta é mais adequada. Se você selecionar essa como a melhor resposta, muitas pessoas irão lê-la.
precisa

Respostas:

180

Sessões são arquivos do lado do servidor que contêm informações do usuário, enquanto Cookies são arquivos do lado do cliente que contêm informações do usuário. As sessões têm um identificador exclusivo que as mapeia para usuários específicos. Esse identificador pode ser passado no URL ou salvo em um cookie de sessão.

A maioria dos sites modernos usa a segunda abordagem, salvando o identificador em um Cookie em vez de passá-lo em um URL (o que representa um risco à segurança). Você provavelmente está usando essa abordagem sem conhecê-la e, ao excluir os cookies, você apaga efetivamente as sessões correspondentes à medida que remove o identificador de sessão exclusivo contido nos cookies.

Eran Galperin
fonte
10
" passá-lo em uma URL (que representa um risco à segurança). ", na verdade, as duas abordagens têm riscos à segurança (diferentes). O ID de segredo na URL pode ser protegido se feito corretamente e se o usuário entender que a URL é secreta e nunca poderá ser publicada em um fórum público.
curiousguy
1
"O identificador pode ser passado na URL ou salvo em um cookie de sessão." . Onde? lado do cliente ou servidor? obrigado por esclarecer mais.
Adib Aroui
4
@whitelettersandblankspaces O cookie da sessão é armazenado no cliente (e seu valor contém o identificador de sessão exclusivo que é enviado a cada solicitação para mapear a sessão do navegador para a sessão do usuário no servidor).
WynandB
306

Um cookie é simplesmente uma sequência curta de texto que é enviada entre o cliente e o servidor. Você pode armazenar name=bob; password=asdfasem um cookie e enviá-lo para frente e para trás para identificar o cliente no lado do servidor. Você pode pensar nisso como realizar uma troca com um caixa bancário que não tem memória de curto prazo e precisa que você se identifique para cada transação. É claro que usar um cookie para armazenar essas informações é horrivelmente inseguro. Os cookies também são limitados em tamanho.

Agora, quando o caixa do banco souber sobre seu problema de memória, ele / ela poderá anotar suas informações em um pedaço de papel e atribuir um número de identificação curto. Então, em vez de fornecer o número da sua conta e a carteira de motorista para cada transação, você pode simplesmente dizer "Sou cliente 12"

Traduzindo isso para servidores da Web: O servidor armazenará as informações pertinentes no objeto da sessão e criará um ID de sessão que será enviado de volta ao cliente em um cookie. Quando o cliente devolve o cookie, o servidor pode simplesmente procurar o objeto da sessão usando o ID. Portanto, se você excluir o cookie, a sessão será perdida.

Uma outra alternativa é o servidor usar a reescrita de URL para trocar o ID da sessão.

Suponha que você tenha um link - www.myserver.com/myApp.jsp você pode acessar a página e reescrever cada URL como www.myserver.com/myApp.jsp?sessionID=asdfou mesmo www.myserver.com/asdf/myApp.jspe trocar o identificador dessa maneira. Essa técnica é manipulada pelo contêiner de aplicativo da web e geralmente é ativada definindo a configuração para usar sessões sem culinária.

Chris Cudmore
fonte
29
Essa é uma explicação maravilhosa ancorada em uma grande analogia do mundo real. Esta resposta deve ser votada muito mais. Muito acessível para iniciantes, com maior probabilidade de fazer essa pergunta.
User798719
2
O que acontece se eu for um usuário e alguém conhecer o meu ID de sessão?
Maria Ines Parnisari
3
@ I19 Possivelmente, eles podem se passar por você. Isso aconteceu em cenários de jogos de azar on-line - fareje o wifi do hotel, roube um ID de sessão e acesse a conta. Proteger uma sessão é outra história.
Chris Cudmore
2
Então, quem cria o cookie primeiro? Servidor ou cliente? Ou isso depende do aplicativo? (Eu diria servidor pois caso contrário ele coloca ameaças à segurança, mas acho que vale a pena mentionning?)
nha
4
@nha O servidor cria a sessão e a passa na resposta com o cookie. A sessão é criada dependendo da lógica do aplicativo quando você deseja que ela seja criada. O cliente também pode criar um cookie, mas pode não ser muito útil no cenário de identificação da sessão, porque o servidor pode não saber o que o valor representa na sessão.
Azeem
4

Os cookies e a sessão armazenam informações sobre o usuário (para tornar a solicitação HTTP com estado), mas a diferença é que os cookies armazenam informações no lado do cliente (navegador) e as sessões armazenam informações no lado do servidor. Um cookie é limitado no sentido em que armazena informações sobre usuários limitados e apenas armazena conteúdo limitado para cada usuário. Uma sessão não é um limite dessa maneira.

Sanjay Singh
fonte
1

Cookie é basicamente uma matriz global acessada em navegadores da web. Muitas vezes usado para enviar / receber valores. ele atua como um mecanismo de armazenamento para acessar valores entre formulários. Os cookies podem ser desativados pelo navegador, o que adiciona uma restrição ao seu uso em comparação à sessão.

A sessão pode ser definida como algo entre efetuar login e sair. o tempo entre o logon e logout do usuário é uma sessão. A sessão armazena valores apenas para o tempo da sessão, ou seja, antes de sair. As sessões são usadas para rastrear as atividades do usuário, uma vez que ele efetua logon.

RishikeshD
fonte
0

Google JSESSIONID . Isso explicará como a API do Servlet inicialmente usa a reescrita de URL e, se os cookies estiverem ativados, os cookies para gerenciar as sessões.

O HTTP é sem estado, portanto, o navegador do cliente deve enviar o ID de sua sessão ao servidor com cada solicitação. O servidor, por qualquer meio, usa esse ID para recuperar todos os dados dessa sessão, tornando-os disponíveis durante toda a vida útil da solicitação.

Nick Holt
fonte
0

Sessão em Asp.net:

1. Mantém os dados em todo o aplicativo.

2.Persiste nos dados se a sessão atual estiver ativa. Se precisarmos de alguns dados acessíveis a partir de várias configurações e visualizações de controladores, a sessão é a maneira de armazenar e recuperar dados.

3.Sessões são arquivos do servidor que contêm informações do usuário. [As sessões são um identificador exclusivo que as mapeia para usuários específicos]

Traduzindo isso para servidores da Web: O servidor armazenará as informações pertinentes no objeto da sessão e criará um ID de sessão que será enviado de volta ao cliente em um cookie. Quando o cliente devolve o cookie, o servidor pode simplesmente procurar o objeto da sessão usando o ID. Portanto, se você excluir o cookie, a sessão será perdida.

Vicky
fonte
0

O cookie é uma maneira de implementar a sessão entre cliente e servidor, dessa maneira as informações da sessão armazenadas no cookie. Mas essa não é a única maneira de armazenar as informações da sessão; outra maneira é armazenar as informações da sessão no URL.

lessisawesome
fonte
0

Os cookies são armazenados no navegador como um formato de arquivo de texto. É uma quantidade limite de dados armazenados. Permite apenas 4kb [4096bytes] . A variável $ _ COOKIE não armazena vários cookies com o mesmo nome

podemos acessar os valores dos cookies facilmente. Portanto, é menos seguro . A função setcookie () deve aparecer ANTES da

<html> 

tag.

As sessões são armazenadas no servidor. É armazenada uma quantidade ilimitada de dados. Ele mantém a variável múltipla nas sessões. não podemos acessar facilmente os valores dos cookies. Portanto, é mais seguro .

Links: diferença entre cookies e sessões

Elangovan
fonte
Bem, na verdade você pode armazenar vários dados em cookies. Além disso, as sessões não podem conter uma quantidade ilimitada de dados. Você é praticamente limitado pela quantidade de RAM que possui.
precisa