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

Segurança API Externa <--> APP

Qual seria o método recomendado para permitir que apenas a aplicação Ionic pudesse mandar requisições para a API externa que a alimenta?

Imagine um APP de compras que um POST para /compras/compra cria uma nova compra e um PUT atualiza aquela compra liberando a mesma para entrega. Como garantir que apenas o APP possa realizar esta alteração, já que o mesmo pode ser acessado por diversos outros Ips externos, etc. Como impedir que o app seja depurado, as rotas da API externas descobertas e que qualquer usuário malicioso consiga fazer essas requisições?

Access-Control-Allow-Origin não iria funcionar, afinal o mesmo opera apenas em contexto de páginas.

Talvez alguma lógica com chaves que alterem-se igualmente tanto no APP quanto na API poderia resolver, já que mesmo que a lógica fosse interceptada o usuário malicioso não teria acesso por muito tempo.

Alguma ideia?

2 respostas

Ian, eu também me interesso pela resposta, vou acompanhar o tópico.

Me ocorre que uma lógica "simples" com um token já poderia resolver, afinal, o token está "escondido" no código da aplicação e na comunicação com o server, creio, estaria criptografado.

Se o app tem usuários cadastrados, mais fácil ainda porque o próprio login do usuário geraria a chave de conexão com a API.

O app também poderia requisitar uma chave para o server usando algum token base e aí renovar este token base de tempos em tempos também.

Mas enfim, curioso para saber como a turma faz isso com apps.

solução!

Token é uma alternativa, já que você não pode barrar as requisições pela origem.

O que foi comentado acima seria o caminho, ou seja, você precisa gerar um token para autenticar o usuário, e ele mandaria o token no cabeçalho da requisição de cada consulta.

Por razões de segurança, você precisaria controlar os tokens gerados, e expirar eles periodicamente. Sempre faça o consumo da API usando conexão por HTTPS.

Tem um curso aqui no Alura onde se mostra o consumo de uma API Node por uma aplicação Angular usando algo chamado JWT Token. Seria bom dar uma olhada neste curso.

https://cursos.alura.com.br/course/mean-javascript

Aqui tem mais algumas informações sobre o JWT

https://www.joshmorony.com/using-json-web-tokens-jwt-for-custom-authentication-in-ionic-2-part-1/
https://www.joshmorony.com/using-json-web-tokens-jwt-for-custom-authentication-in-ionic-2-part-2/

A segurança da aplicação não se resume apenas a forma de comunicação com a API. Aqui tem 2 textos bem interessantes com dicas referentes ao aplicativo

https://www.joshmorony.com/basic-security-for-ionic-cordova-applications/

http://masteringionic.com/blog/2018-01-09-securing-ioniccordova-mobile-applications/