Executando verificação de segurança...
4

A importância da utilização de tokens em API's

Hoje, as API's (Application Programming Interfaces) são extremamente importante para a comunicação entre sistemas e na troca de dados. Permitindo que vários dispositivos diferentes conversem entre si com facilidade, possibilitando que celulares, computadores, servidores e etc possam realizar troca de informações com alta performace e segurança.

E quando falamos de segurança, logo estamos falando de Tokens.

O que são Tokens e para que servem?

Tokens são credenciais únicas criadas pelo servidor e distribuído ao cliente que podem representar permissões e direitos de acesso. Simplificando, Tokens são como "chaves digitais" que permite que o usuário acesse informações de forma segura.

Existem vários tipos de Tokens, listarei os mais comuns:

  • Tokens de acesso: Usados para acessar informações protegidas por um certo período de tempo.

  • Tokens de Atualização (Refresh Tokens): Permite que o usuário solicite novos tokens de acesso sem a necessidade de autenticação.

  • Tokens JWT (Json Web Tokens): O queridinho entre os devs. Este Token combina informações sensíveis codificadas com assinaturas digitais, garantindo um alto nível de segurança.

Onde são usados?

Tokens podem ser utilizados em praticamente todas as soluções, porém irei listar algumas exemplos de aplicações que são muito utilizados:

  • Login em Redes Sociais: Quando o usuário faz o login em uma plataforma como o LinkedIn por exemplo. O servidor usa suas credênciais para a autenticação. E para evitar que sua senha seja exposta de alguma maneira, Tokens são gerados para permitir que a troca de informações sejam seguras.

  • Pagamentos Online: Em sistemas de pagamentos, são gerados Tokens para autorizar as transações sem a necessidade de armazenar informações sensíveis como os dados do cartão utilizado e do comprador.

  • Apps Mobile: Muitos aplicativos mobiles utilizam Token para manter o usuário autenticado mesmo não utilizando o app. Permitindo que não realize a autenticação toda vez que o aplicativo for utilizado.

Conclusão

Tokens em API's são recursos extremamente úteis quando se trata de segurança em uma aplicação. Garantindo que seus usuários possam se comunicar e interagir com sua solução, sem se preocupar se alguém irá roubar suas informações. São ferramentas fáceis de serem implementada e extremamente poderosa!

Carregando publicação patrocinada...
2
1

Boa pergunta. Dependendo da aplicação, pode ser vantajoso. Como por exemplo, no exemplo de aplicativos mobile é utilizado o armazenamento deste token para manter o usuário autenticado.

Armazenamento de Tokens em Cookies podem ser inseguros pois há chances de ocorrer um ataque CSRF (Cross-Site Request Forgery).

Dependendo da aplicação, podem ser extremamente úteis, porém no meu dia a dia como dev, não utilizo armazenamento local de Tokens ou etc. Pois, os tokens utilizados são descartados após o uso.

2

Pesquisando sobre, pois também fiquei curioso só usar cookie na verdade é uma boa opções desde que vc utiliza a flag httpOnly e secure.
pois o httpOnly impede ataque xss pois não é possível enviar usando javascript
e o secure só permite o envio usando https.

Ainda estou pesquisando sobre o assunto pois sempre utilizei localstorage.

1
1

Perguntando ao chatgpt achei uma abordagem interessante que é a seguinte:

Como mencionei acima usando essa configuração com cookie o controle da sessão e segurança fica toda no backend isso é como aplicações mvc tradicionais e a forma de trafegar o token é via navegador no caso do angular existe a possibilidade de passar a flag withcretential nas requisições com isso o navegador sabe que precisa enviar o token.

Achei essa forma bem interessante e parece ser bem simples de trabalhar tbm.

1

Estou trabalhando com tokens no meu projeto e utilizei o modulo crypto do nodejs para gerar um hash unico e armazeno esse token em uma tabela no banco de dados postgres, e tambem tenho uma função que verifica nas requisições se o token ainda está no prazo de validade. Quando o usuário faz login o token é criado e armazenado nos cookies do navegador, estava tentando aprender como proteger esse cookie, visto que se alguém rouba-lo e ele ainda for valido, a sujeito pode se passar pelo usuário mesmo sem fazer login, caso ele tenha injetado esse token nos cookies dele.

1

Eu vejo da seguinte maneira:

O algoritmo RSA nas suas implementações requer chaves criptográficas.

A internet coloca em evidencia muito que estava camuflado.

Eu considero o algoritmo RSA (que é muito muito muito usado) como uma pérola que a internet revela.
Devia-ser falar mais sobre ele.

0
1

Interessante, estou fazendo um sistema que preciso usar uma API e quero usar tokens para segurança acha valido esse JWT? por que eu penso que se ele é o queridinho dos devs acredito que seja valido. não?

1

Com toda certeza!! Os tokens JWT são criptografados e utilizam uma assinatura digital, por isso digo que é o querinho entre os devs haha. Mas, quando eu estou desenvolvendo uma aplicação, sempre uso o JWT dependendo da aplicação e sua necessidade de segurança.

1

entendi, como não tenho muita experiência com APIs e tokens como você usa eles? tem alguma maneira específica? tem alguma norma ou boa prática para isso?

Pelo o que pesquisei consegui colocar o token do JWT para gerar de 1 em 1 hora seria o ideal? ou mais rápido/lento?

1

Isso vai depender do que voce quer fazer. Colocar a renovação de uma em uma hora vai diminuir o impacto de um token vazado por exemplo,mas vai exigir que o desenvolvedor de consuma sua API se autentique mais vezes podendo diminuir o desempenho da aplicação dele. Normalmente deixo válido por 24 horas considerando que minhas aplicações todas seguem as mais atualizadas técnicas de segurança e boas práticas de desenvolvimento.

0