No mecanismo de Cookie, Session e Token

I. Introdução

  Este blog para falar sobre Webaplicações amplamente utilizadas Cookie, Sessionbem como Tokenmecanismos, eles Webdesempenham um papel vital na aplicação, mas também os locais de teste de alta frequência na entrevista. Este blog I principalmente introduzir os conceitos e princípios dessas três coisas são implementadas, e as diferenças entre eles.


Em segundo lugar, o texto

  2.1 Por que eles são necessários

  Em primeiro lugar a primeira pergunta, por que precisamos essas três coisas? Muito pouca compreensão HTTPdeve estar ciente de que HTTPo protocolo é um protocolo sem estado. O que é apátrida? Ou seja, HTTPo servidor para cada solicitação da mesma forma, não registra o estado de cada pedido, como quem é emitido, todas as solicitações é alheio a ele. Mesmo se você enviar dois pedidos sucessivos para o mesmo servidor, é, e isso é dois pedidos completamente alheios. No entanto, vamos encontrar um tal fenômeno, quando logar em um site, o servidor parecia a conhecer-nos, nós enviou um pedido, podemos obter uma resposta associada com a nossa. Por exemplo, nós Taobao Após o login, clique no carrinho de compras, será capaz de ver os nossos próprios produtos adicionados, e se não entrar, ele será bloqueado, saltar para a página de login. Por que isso? Não quer dizer HTTPé apátrida-lo. Na verdade, isso depende de três mecanismos acima.


  CookieNa verdade, alguns dos dados de texto armazenados no navegador do computador, que é key-valueo formulário, que contém algumas informações de nossa própria, bem como servidores. Quando enviar um pedido a um servidor, o servidor pode querer-nos para armazenar alguns dados localmente, desta vez juntos será no cabeçalho de um nome de pacote de resposta é Set-Cookie(ou Set-Cookie2, dependendo da versão) linha de cabeçalho, seguido por navegar esperança ele é armazenado nos dados locais. Navegador recebe o pacote de resposta, em que os encontrados set-Cookiecampos, os dados contidos nele serão armazenados no computador, mas também gravar o endereço do servidor. Que esses dados que serve? Quando ao enviar um pedido ao servidor, tais Cookievai juntamente com a mensagem de solicitação para o servidor, o servidor recebe os dados Cookiede dados, a fim de ser capaz de identificar o pedido de transmissão de corrente que é um cliente, ou podem ser identificados o cliente, a fim de dar uma resposta correspondente à operação. Este processo é mostrado a seguir:

  Desde Cookieé salvo em um arquivo local, então ele pode ser armazenado por longos períodos só precisa definir o tempo de expiração mais longo. Há também de notar que, devido Cookieao local, por isso é realmente um armazenamento de dados não segura, permitindo assim que o navegador do cliente desativada Cookie. Além disso, a Cookiecapacidade de poupar o tamanho dos dados é também limitada, único biscoito não pode exceder os dados armazenados 4K.


  2.3 Sessão

  SessionA tradução chinesa é chamado: a sessão, indicando que ele é um cliente de conversa e o servidor. E Cookienão é o mesmo, Sessionsão mantidos pelo servidor. Quando um cliente envia uma solicitação para o servidor, o servidor será criado para iniciar o cliente a pedido de um objeto e é armazenado em um conjunto de servidores, gerando um único SessionIdpara identificar o objeto, mas sobre as informações do usuário atual pode ser armazenada neste objeto. Quando o servidor envia uma mensagem de resposta ao utilizador, será SessionIdcolocado no pacote de resposta Set-Cookiede cabeçalho, o utilizador recebe o pacote de resposta, quando o detectado Set-Cookielinha de cabeçalho, contidos no mesmo SessionIdestá armazenado localmente. A próxima vez que o cliente envia uma solicitação para o servidor, SessionIda partir da Cookieleitura, e enviada para o servidor. Servidor detectado SessionIdapós o armazenamento Sessionpara encontrar este objeto de coleção SessionIdcorrespondente ao objeto, para obter informações sobre o usuário. Os usos mais comuns é que os usuários fazem login: Quando um usuário faz logon, o servidor Sessionidentidade armazenar informações do usuário, tais como userId. Depois de receber uma solicitação do usuário, consulta Sessionobjetos, se contendo userId, indica que o usuário logado, e pode ser adquirido pelo userIdusuário consulta de dados privados. O servidor não tem de manter Session, ele vai sair do usuário do navegador, ou não depois de receber a solicitação do usuário, será por algum tempo Sessionpara limpar.

  No entanto, Sessionexistem alguns problemas, como para cada usuário, o servidor precisa manter um ou mais Session, se um grande número de usuários para acessar o servidor ao longo do tempo, fará com que as necessidades do servidor para manter um grande número de Sessionobjetos, pegada sério. Além disso, de hoje Webservidores, adotaram o cluster de tecnologia, o cluster cada servidor Sessioné independente, para atingir Sessionshare é uma tarefa mais difícil. Finalmente, um outro ponto, o navegador pode ser desativado Cookieneste momento SessionIdnão será armazenada em Cookie, desta vez o navegador é a prática geral em URLcolocar em SessionId, por isso antes de o usuário não fechar a página, esta SessionIdnão será perdido.


  2.4 token

  TokenO papel principal é fazer de usuário de autenticação , geralmente chamá-lo: token. Quando logon em um site, digite a senha da conta enviada para o servidor. Neste ponto, o servidor para consultar o banco de dados para verificar a senha da conta, se a autenticação for bem sucedida, o servidor de acordo com um algoritmo de criptografia especial para calcular um Token(cadeia de caracteres), enviá-lo para o cliente, e informações de identidade do usuário também é enviado no passado, tais como userId. Depois de receber a resposta, ele será Tokenarmazenado na Cookiememória ou local, um pedido de novo Token, e userIdenviado para o servidor. Quando o servidor recebe um pedido, de acordo com as informações relevantes do cliente, recálculo Token, se o novo Tokenvalor é enviado para o cliente com Tokeno mesmo, antes que o usuário foi validado indica, o servidor pode obter dados diretamente.

  E eu não estou me sentindo Sessionum pouco semelhante, mas na verdade a diferença é muito grande. computação de servidor Tokenvalores precisam usar as informações do usuário pessoais (como cliente mac地址), eo próprio servidor de chaves único conhecido, que também garante que Tokenpara cada cliente é único, e porque somente própria chave do servidor você sabe, por isso, os hackers não podem simular a computação servidor Tokenvalor, em seguida, enviar pedidos falsos. Enquanto o servidor detecta um erro Token, ele não permitirá que o pedido do cliente, mas requer o cliente para autenticar. Além disso, para cada solicitação, o servidor não precisa de como Sessiona mesma, senão a identidade do cliente, é necessário calcular um tempo Tokenpode ser comparado, isto é, ele não quebrar HTTPapatridia.

  No entanto, isso também significa que Tokenuma vez que são interceptadas por terceiros, o outro lado pode usar a sua identidade, faz uma solicitação para o servidor. Então, Tokenele é geralmente baseada em HTTPSuso, em vez de inseguro HTTPde usar. Também armazenado no processamento de criptografia local vai ser levada a cabo em conformidade.


  A diferença entre os três 2.5

   A diferença entre (1) Session e Cookie

  1. Segurança: Session mais de Cookiesegurança, Sessioné armazenado no lado do servidor, você pode ver apenas o seu próprio servidor Sessionde armazenamento de dados, mas Cookieé na memória do cliente, de fácil leitura ilegalmente.
  2. Valores de diferentes tipos de acesso : Cookieos dados armazenados em um arquivo de texto, por isso só permite que os dados cadeia armazenada, pretende definir outros tipos de dados necessários para convertê-lo para uma cadeia, Sessionpodem ser armazenados em qualquer tipo de dados, porque ele é armazenado em um servidor memória, essencialmente um objeto.
  3. validade diferente: Cookie pode ser definido por longos períodos, como muitas vezes usamos a função de login padrão, Sessiona falha geral de um curto período de tempo, o fechamento do cliente (padrão) ou Sessiontempo limite irá falhar.
  4. Diferentes tamanhos de armazenamento: únicos Cookiedados guardados não pode exceder 4K, Sessionele pode ser muito maior do que os dados armazenados Cookie, mas quando o servidor Sessioné muito grande, ele vai ocupar muito os recursos do servidor, fazendo com que o servidor para executar lentamente.

(1) a diferença entre a sessão e Token

  SessionE Token, de fato, são essencialmente diferentes, eles não são usados na mesma coisa. SessionO papel principal é cliente armazenar informações de sessão e o servidor, que é necessidades do servidor para saber informações sobre o atual cliente solicitante, por isso mantém uma recolha, armazenamento Sessionobjeto que contém as informações do cliente. Mas, Sessioneste mecanismo também pode ser usado para a verificação, desde que o servidor tem um cliente atual Session, e que contém as informações relevantes, o servidor que os clientes atuais têm sido verificados.

  No entanto Token, ele não requer o servidor para manter o estado do cliente, seu papel é apenas para cliente envia uma solicitação para fazer a verificação, para evitar alguns ataques de rede. Apenas autenticado solicitação do cliente, o servidor dará a resposta, caso contrário, eles serão obrigados a verificar-lo. Além disso, Tokena autenticação em segurança do que Session. Os dois não estão em conflito, podemos usar o servidor Tokenpara o cliente para verificação e, em seguida, usar a Sessionsalvar as informações da sessão.


Em terceiro lugar, o resumo

  No rosto Cookie, Sessione Tokenfez uma introdução geral, eu acredito que após a leitura, estas três pessoas podem ter uma compreensão geral, mas eles querem estudar realmente em profundidade o mecanismo de princípios e implementação, logo acima do conteúdo é completamente não é suficiente, nós também precisamos aprender informações mais específicas.


Em quarto lugar, a referência

Acho que você gosta

Origin www.cnblogs.com/tuyang1129/p/12563602.html
Recomendado
Clasificación