Vamos examinar isso:
Cookies e sessões são formas de preservar o estado do aplicativo entre as diferentes solicitações feitas pelo navegador. É graças a eles que, por exemplo, você não precisa fazer login toda vez que solicitar uma página no StackOverflow .
Biscoitos
Cookies são pequenos bits de dados, (máximo de 4 KB), que contêm dados em pares chave = valor:
name=value
Eles são definidos por JavaScript ou por meio do servidor usando um cabeçalho HTTP .
Os cookies têm uma data e hora de validade definida, por exemplo, usando cabeçalhos HTTP:
Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT
O que faria com que o navegador definisse um cookie nomeado name2
com um valor devalue2
, que expiraria em cerca de 9 anos.
Os cookies são considerados altamente inseguros porque o usuário pode facilmente manipular seu conteúdo. É por isso que você deve sempre validar os dados do cookie . Não presuma que o que você obtém de um cookie é necessariamente o que você espera.
Os cookies geralmente são usados para preservar o estado de login, onde um nome de usuário e um hash especial são enviados do navegador e o servidor os verifica no banco de dados para aprovar o acesso.
Os cookies também são frequentemente usados na criação de sessões .
Sessões
As sessões são ligeiramente diferentes. Cada usuário recebe um ID de sessão , que é enviado de volta ao servidor para validação por cookie ou por variável GET .
As sessões geralmente têm curta duração, o que as torna ideais para salvar o estado temporário entre aplicativos. As sessões também expiram quando o usuário fecha o navegador.
As sessões são consideradas mais seguras do que os cookies porque as próprias variáveis são mantidas no servidor . Funciona assim:
- O servidor abre uma sessão (define um cookie por meio do cabeçalho HTTP)
- O servidor define uma variável de sessão.
- Página de mudanças do cliente
- O cliente envia todos os cookies, junto com o ID da sessão da etapa 1.
- O servidor lê o ID da sessão do cookie.
- O servidor corresponde ao ID da sessão de uma lista em um banco de dados (ou memória, etc.).
- O servidor encontra uma correspondência, lê as variáveis que agora estão disponíveis na
$_SESSION
superglobal.
Se o PHP não encontrar uma correspondência, ele iniciará uma nova sessão e repetirá os passos de 1-7.
Você pode armazenar informações confidenciais em uma sessão porque elas são mantidas no servidor, mas esteja ciente de que o ID da sessão ainda pode ser roubado se o usuário, digamos, estiver conectado em um WiFi inseguro. (Um invasor pode farejar os cookies e defini-los como seus próprios; ele não verá as variáveis por si só, mas o servidor identificará o invasor como o usuário).
Essa é a essência disso. Você pode aprender mais no manual do PHP em ambos os assuntos.