Comecei a usar o PHP alguns meses atrás. Para criar um sistema de login para o meu site, li sobre cookies e sessões e suas diferenças (os cookies são armazenados no navegador do usuário e as sessões no servidor). Naquela época, eu preferia os cookies (e quem não gosta de cookies ?!) e apenas dizia: "quem se importa? Eu não tenho muito interesse em armazená-lo no meu servidor", então fui em frente e usei cookies para meu projeto de graduação de bacharel. No entanto, depois de fazer a maior parte do meu aplicativo, ouvi dizer que, para o caso particular de armazenar o ID do usuário, as sessões são mais apropriadas. Então comecei a pensar no que diria se o júri me perguntasse por que você usou cookies em vez de sessões? Eu tenho exatamente esse motivo (que não preciso armazenar internamente informações sobre o usuário).? ou é mais do que isso?
Você poderia me falar sobre as vantagens / desvantagens do uso de cookies para manter o ID do usuário?
Obrigado por todos vocês no StackOverflow!
Respostas:
O conceito é armazenar dados persistentes através de carregamentos de páginas para um visitante da Web. Os cookies armazenam diretamente no cliente. As sessões usam um cookie como uma espécie de chave, para associar-se aos dados armazenados no lado do servidor.
É preferível usar sessões porque os valores reais estão ocultos do cliente e você controla quando os dados expiram e se tornam inválidos. Se tudo fosse baseado em cookies, um usuário (ou hacker) poderia manipular os dados dos cookies e reproduzir solicitações no seu site.
Editar: Não acho que exista qualquer vantagem em usar cookies, além da simplicidade. Veja desta maneira ... O usuário tem algum motivo para saber seu ID #? Normalmente, eu diria que não, o usuário não precisa dessas informações. A divulgação de informações deve ser limitada com base na necessidade de conhecimento. E se o usuário alterar seu cookie para ter um ID diferente, como seu aplicativo responderá? É um risco de segurança.
Antes das sessões serem a fúria, eu basicamente tinha minha própria implementação. Eu armazenei um valor exclusivo de cookie no cliente e meus dados persistentes no banco de dados, juntamente com esse valor. Em seguida, nas solicitações de página, correspondi a esses valores e tive meus dados persistentes sem deixar que o cliente controlasse o que era.
fonte
session_write_close();
quando necessário. Rolar seu próprio ID exclusivo e combinar com cookies simples não foi tão difícil e mantém todas as páginas agradáveis e rápidas.Idéias básicas para distinguir entre os dois.
Sessão:
Biscoitos:
A sessão é preferida quando você precisa armazenar informações / valores de curto prazo, como variáveis para cálculo, medição, consulta etc.
Os cookies são preferidos quando você precisa armazenar informações / valores de longo prazo, como a conta do usuário (para que, mesmo quando o computador for desligado por 2 dias, a conta deles ainda esteja conectada). Não consigo pensar em muitos exemplos de cookies, pois não são adotados na maioria das situações.
fonte
Essa é a principal diferença em sua escolha,
Se você deseja que o ID seja lembrado por muito tempo, é necessário usar cookies; caso contrário, se você quiser que o site reconheça o usuário apenas para esta visita, as sessões serão o caminho a seguir.
As sessões são armazenadas em um arquivo que o servidor php irá gerar. Para lembrar qual arquivo é para qual usuário, o php também definirá um cookie no navegador do usuário que contém o ID do arquivo da sessão, para que na próxima visita o php leia esse arquivo e recarregue a sessão.
Agora, por padrão, o php limpa as sessões a cada intervalo, e também a convenção de nomenclatura da sessão faz com que ela expire automaticamente. Além disso, os navegadores não manterão o cookie que contém o ID da sessão quando o navegador for fechado ou o histórico limpo.
É importante observar que hoje em dia os navegadores também oferecem suporte a outro tipo de mecanismos de armazenamento, como LocalStorage, SessionStorage e outros mecanismos webdb que o código javascript pode usar para salvar dados em seu computador para lembrar de você. Se você abrir o console javascript no Facebook, por exemplo, e digitar "localStorage", verá todas as variáveis que o Facebook usa para se lembrar de você sem cookies.
fonte
quando você salva o #ID como cookie para reconhecer usuários conectados, na verdade você está mostrando dados para usuários que não estão relacionados a eles. Além disso, se um terceiro tentar definir IDs aleatórios como dados de cookie em seu navegador, ele poderá convencer o servidor de que é usuário enquanto não é. Isso é falta de segurança.
Você usou cookies e, como disse, já concluiu a maior parte do projeto. Além disso, o cookie tem o privilégio de permanecer por um longo tempo, enquanto as sessões terminam mais rapidamente. Portanto, as sessões não são adequadas neste caso. Na realidade, muitos sites e serviços famosos e populares usam cookies e você pode permanecer conectado por um longo tempo. Mas como você pode usar o método deles para criar um processo de logon mais seguro?
aqui está a idéia: você pode ajudar a usar cookies: se você usar chaves aleatórias em vez de IDs para reconhecer usuários logados, primeiro não vazará seus dados primários para usuários aleatórios e, em segundo lugar, se você considerar o item Aleatório chave grande o suficiente, será mais difícil para alguém adivinhar uma chave ou criar uma aleatória. por exemplo, você pode salvar uma chave de 40 comprimentos como esta no navegador do usuário: "KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn" e será menos provável que alguém crie a chave exata e finja ser outra pessoa.
fonte
Resposta curta
Regras ordenadas por prioridade:
Fonte: https://www.lucidar.me/en/web-dev/sessions-or-cookies/
Resposta detalhada
Biscoitos
Sessões
A escolha apropriada
As sessões usam um cookie!Os dados da sessão são armazenados no lado do servidor, mas um UID é armazenado no lado do cliente em um cookie. Ele permite que o servidor combine um determinado usuário com os dados corretos da sessão. O UID é protegido e difícil de invadir, mas não é invulgar. Para ações confidenciais (alteração de email ou redefinição de senha), não confie nas sessões nem nos cookies: solicite a senha do usuário para confirmar a ação.
Os dados sensíveis nunca devem ser armazenados em cookies (e-mails, senhas criptografadas, dados pessoais ...). Lembre-se de que os dados são armazenados em um computador estrangeiro e, se o computador não for particular (sala de aula ou computadores públicos), alguém poderá ler o conteúdo dos cookies.
Os dados Lembrar-me devem ser armazenados em cookies, caso contrário, os dados serão perdidos quando o usuário fechar o navegador. No entanto, não salve a senha ou os dados pessoais do usuário no cookie 'lembre-se de mim'. Armazene dados do usuário no banco de dados e vincule esses dados a um par de ID / chave criptografado armazenado em um cookie.
Depois de considerar as recomendações anteriores, a pergunta a seguir é finalmente o que ajuda você a escolher entre cookies e sessões:
Os dados persistentes devem permanecer quando o usuário fecha o navegador?
fonte
Na verdade, sessão e cookies nem sempre são coisas separadas. Frequentemente, mas nem sempre, a sessão usa cookies.
Há algumas boas respostas para sua pergunta nessas outras perguntas aqui. Como sua pergunta é especificamente sobre como salvar o IDU (ou ID) do usuário, não acho que seja uma duplicata dessas outras perguntas, mas as respostas deles devem ajudá-lo.
cookies vs sessão
Cache VS Sessão VS cookies?
Qual é a diferença entre uma sessão e um cookie?
fonte
Eu pessoalmente uso os cookies e a sessão.
Cookies usados apenas quando o usuário clica na caixa de seleção "lembrar de mim" . e também os cookies são criptografados e os dados somente descriptografam no servidor. Se alguém tentar editar cookies, nosso decodificador poderá detectá-lo e recusar a solicitação.
Eu já vi tantos sites nos quais as informações de login são armazenadas em cookies , qualquer um pode simplesmente alterar o ID do usuário e o nome de usuário nos cookies para acessar qualquer conta.
Obrigado,
fonte
Session e Cookie não são os mesmos.
Uma sessão é usada para armazenar as informações das páginas da web. Normalmente, as páginas da web não têm lembranças para armazenar essas informações. Mas usando podemos salvar as informações necessárias.
Mas o Cookie é usado para identificar os usuários. Usando cookie, podemos armazenar os dados. É uma pequena parte dos dados que serão armazenados no navegador da web do usuário. Portanto, sempre que o usuário procurar o navegador da próxima vez, envie de volta as informações dos dados do cookie ao servidor para obter as atividades anteriores.
Créditos: Sessão e Cookie
fonte
As sessões permitem que você armazene informações individuais como os cookies, mas os dados são armazenados no servidor e não no cliente.
fonte
Como outros disseram, as sessões são inteligentes e têm mais vantagem de ocultar as informações do cliente.
Mas o cookie ainda tem pelo menos uma vantagem , você pode acessar seus cookies a partir de Javascript (por exemplo, ngCookies ). Com a sessão PHP, você não pode acessá-la em nenhum lugar fora do script PHP.
fonte
Selecionarei Sessão, antes de tudo, a sessão é mais segura do que os cookies, cookies são dados do site do cliente e sessão são dados do site do servidor. Os cookies são usados para identificar um usuário, porque são pequenos pedaços de código incorporados ao meu servidor no navegador do computador do usuário. Por outro lado, a Sessão ajuda a proteger sua identidade porque o servidor da Web não sabe quem você é, pois o endereço HTTP altera o estado 192.168.0.1 para 765487cf34ert8ded… ..ou outra coisa é numerada com a ajuda dos métodos GET e POST. A sessão armazena dados do usuário em uma sessão de ID exclusiva que nem mesmo a ID do usuário pode corresponder. A sessão armazena informações de usuário único em todas as páginas de um aplicativo. Os cookies expiram são configurados com a ajuda de setcookies () enquanto a sessão expirar não é configurada, eles expiram quando o usuário desliga os navegadores.
fonte
Uma sessão é um grupo de informações no servidor associado às informações de cookies. Se você estiver usando PHP, poderá verificar a sessão. salve _ localização do caminho e, na verdade, "veja as sessões". Um cookie é um trecho de dados enviados e retornados de clientes. Os cookies geralmente são usados para facilitar as sessões, pois informa ao servidor qual cliente tratou qual sessão. Existem outras maneiras de fazer isso (query string magic etc), mas os cookies provavelmente são os mais comuns.
fonte