Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

JWT realmente é seguro? Algum outro método é?

Já fiz curso de Java e ASP.Net Core, onde é demonstrado JWT como segurança para APIs, porém o método me parece falho, pois qualquer um que tenha acesso ao token poderá utilizar a API sem nenhum problema.

A minha pergunta está relacionada ao fato de que se eu criar uma SPA (que pode ser acessada de maneira não autenticada) com Angular, por exemplo, quando eu fizer as requisições para a API que utilizada JWT (que a ideia é que seja acessada somente pela SPA e não diretamente), toda a lógica de geração do token estará exposta na página, talvez de uma maneira não muito legível, mas estará. Além disso, com as ferramentas de desenvolvimento dos navegadores, é possível monitorar as requisições e visualizar o token gerado, possibilitando assim consumir a API de qualquer lugar.

Tempos atrás precisava coletar algumas informações de um site, vi que tinha uma API e usava autenticação, peguei o token que foi gerado no próprio site e usei para chamar a API direto, claro, não abusei desse fato, porém consegui usar algo que estava "seguro".

Realmente existe alguma maneira de proteger uma API de acessos indesejados? Tem algum curso aqui na Alura sobre isso?

6 respostas

Boa tarde!

O JWT pode ser uma ferramenta poderosíssima se utilizada com a correta implementação. Você pode ter API stateless ou até statefull se utilizar o JWT.

Mas vamos para o ponto questionado: a segurança. Na minha opinião, se você aplicar um bom algoritmo de criptografia, onde a chave fique armazenada em lugar seguro, e implementar mais algumas validações sobre o request, você terá a segurança necessária para garantia dos dados.

No curso que você fez, deve ter sido apresentado a questão mais teórica/conceitual. Exige um pouco mais de tempo a questão de segurança.

O mais comum é a geração e criptografia pelo back-end, e apenas o consumo / trafego pelo front-end.

Espero ter ajudado.

Bons estudos!

E ai Thiago!

Provavelmente o conteúdo do curso é conceitual, porém estou tentando entender como posso melhorar isso, por isso perguntei de cursos relacionados a essa parte de segurança.

Entendo que se existir um site que é renderizado no servidor, minha API poderia fazer parte de uma rede privada e com isso conseguiria restringir o acesso a ela somente através dessa rede, ai os dados seriam exibidos somente pelo front, quem acessa o site nem saberia que a API existe.

No caso do Angular, imagino que no React também, não consigo fazer isso, e mesmo que usasse um JWT, a lógica e a chave ficariam na Web. Então eu não deveria utilizar ambos?

Gostaria de ter mais informações sobre isso para criar sites/apis seguras.

Boa tarde!

Aqui no trabalho usamos o java no back-end como serviços, devolvendo json para a tela, e angular no front-end.

Camadas protegidas, separando tudo.

No seu caso, o site é aberto ou precisa de autenticação para acessar? Vocês utilizando Universal?

Estava pensando aqui, para um site que é necessário autenticação, provavelmente o JWT faça sentido, mas para um site aberto com API privada, acho que Angular não seria uma boa escolha.

Isso pode ser também por eu não ter um conhecimento tão aprofundado no Angular, mas pelo que pesquisei, não consegui encontrar uma maneira de proteger a API.

Pensando em geral da minha pergunta, talvez nem seja questão de back e front, talvez esteja relacionado a maneira que está a parte de infra, também não sei se API privada seria o termo correto.

solução!

Bom dia Mateus.

Na empresa o site é interno e precisa de autenticação. Mas não gravamos sessão. Os dados ficam armazenados e criptografados no JWT.

A nossas APIs foram desenvolvidas em Java, e os endpoints tem um filtro que faz a validação dos dados.

Sobre a questão de autenticação, achei um link interessante: https://blog.mandic.com.br/artigos/seguranca-em-apis-rest-parte-1/

Acho que vale a leitura.

Bom dia Thiago,

Com um site aberto, entendo que a API deve ter outras formas de controle, talvez restringir por IP ou algo relacionado a isso, de qualquer maneira, obrigado por compartilhar o link.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software