Olá pessoal,
Bom gostaria de saber a diferença entre Tokens, session e Cookies?
Como eu posso inspeciona-ló no lado do Cliente?
Olá pessoal,
Bom gostaria de saber a diferença entre Tokens, session e Cookies?
Como eu posso inspeciona-ló no lado do Cliente?
primeiros os Cookies, os cookies são dados que ficam armazenado no cliente e são sempre reciclados durante a requisição, são visíveis e editáveis, são enviados no Header da requisição e armazenados no browser, uma forma de vê-los é usando JavaScript , dá uma olha em https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie e como manipular os cookies com Js, a Session é um cookie especial, geralmente usado pelo servidor para guarda algum grupo de valores em um dicionario chave valor, no lado do cliente é salvo um cookei com uma hash que referencia a aplicação no servidor , em caso do JAVA é JSESSID, no caso do PHPSESSID… sobre as Tokens ,são chaves “hasheadas” ,e podem ser passadas por parâmetro Http ,a token é parecidas com a session, porém mas flexíveis, afinal tokens pode ser passadas por parâmetro numa chamada HTTP, o que torna mas simples de usar do lado cliente, ele tem total liberdade de usa-la fora de um browser, quando session são exclusiva para browser… em casos de aplicações mobile e rotinas que usam apenas JS as tokens são as mas indicadas para o processo de autenticação , veja um pouco de JWT, que é a especificação que retrata o uso de forma mas direta https://jwt.io/
Oi @C0deuniversal ,
Eu vi como eu consigo inspecionar o cookies muito obrigada.
Com JavaScript posso usar o
# Escrita
document.cookie = "chave=valor, expires=DATA"
# Leitura "Array de Cookies"
var bla = document.cookie;
e para visualizar posso estar utilizando o ferramenta de desenvolvedor do browser em questão, que na minha seria o Chrome apertando o CTLR + SHIFT + I ou F12. Na aba Resource.
Porém assim como você disse a Session é um cookie que tem por exemplo:
# Exemplo da Session ficticia
# Isso é gerado no lado do servidor e passado como cookie para client
JSESSIONID = 1313121324213354AKS;
para que o servidor posso saber que você realmente é a pessoa em questão que ele está autorizando você a usar digamos “algo” no meu serviço web .
Sendo que com Tokens pode ser referido como um arquivo “escondido” muito parecido com a funcionalidade da Session que por sua vez é um cookie meio que bugo meu cérebro :
# Exemplo outra vez ficticio
<input type="hidden" name="_Token" value="lajsdlfamSXALSJKDL1231dSDJLI#@mdlijo"/>
que é criado um “HASH” no servidor por motivos de segurança para combater ataques de CSRF entre outros, isso pelo que eu estudei nesses dias. Ah esqueci de comentar que o codigo acima também pode ser feito via XML ou JSON se desejar.
Mas então eu não entendi de usar o tokens no processo de autenticação nas aplicações mobile e rotinas que usam JS? Eu não poderia passar a Session para o aplicativo (Mobile ou Web) via HTTP através de JSON ou XML para que haja uma autenticação?
Amei o JWT ele mostra direitinho como é aplicado os Tokens do lado do cliente e do lado do servidor.
vamos analisa um pouco os Cookies
quando o servidor responde a uma requisição com uma definição de Cookie , é enviado dessa forma:
Set-Cookie: chave=valor;path=\
o seu Browser, irá recebe-lá e devolve-la com o seguinte header
Cookie:chave=valor
vamos vê o cenário analisando como seria isso por JS,
usando API nativa do JavaScript, podemos facilmente lê um valor do Cookie enviado pelo servidor, e responde-lo devidamente, porém , existe uma Flag criada por razões de segurança para tentar evitar o roubo de sessão por ataques de XSS por exemplo, essa flag é entregada pelo servidor, nomeada como HttpOnly
vamos então vê como seria um requisição com HttpOnly:
Set-Cookie: chave=valor; path=/; HttpOnly
todos as requisições que são sinalizadas com essa flag não pode ser manipulas por JavaScript, note então que nesse cenário não é possível responder com a session…
considere boa prática usar essa flag, afinal segurança nunca é demais, mas no resto das situações pode usar sim, mas considere usar o JWT ao invés da abordagem com session, afinal ele não precisa de muita criatividade para funciona 
mas a sua questão é boa!