Checklist de integração
Montamos essa checklist para te ajudar a garantir que você está integrando com nossos SDKs da maneira mais segura possível :)
- Meu servidor é quem gera os tokens, de forma dinâmica, para meus usuários
- Meu servidor gera tokens específicos para um CPF
- Meu servidor gera tokens com prazos de expiração razoáveis
- Meu servidor não gera tokens com todos os produtos para usuários não autenticados
- Estou validando o payload e a assinatura das respostas do SDK no meu servidor usando meu
clientSecret
Não marcou todas? Veja nossas dicas abaixo para tornar sua aplicação mais segura!
Se ainda assim restar alguma dúvida, mande-nos um e-mail! Ficaremos felizes em ajudar :)
Sempre gere os tokens no seu servidor
Em hipótese alguma coloque seu token ou seu clientId
e clientSecret
direto no seu aplicativo! Um atacante pode fazer engenharia reversa e usar esse token para fazer requisições fraudulentas em seu nome. Isso coloca seus clientes em risco e pode gerar cobranças indevidas para sua conta.
Sempre gere tokens da forma mais restrita possível
Procure gerar tokens autorizados a executar somente os produtos que o usuário precisa naquele momento. Em outras palavras, não use um único clientId
e clientSecret
com todas as permissões para gerar seus tokens. Crie diferentes acessos (clientId
) com diferentes permissões, e sempre gere o token usando o mais apropriado.
Se você já sabe quem é o usuário que irá fazer as requisições, inclua o CPF dele no payload do token para restringir quais dados ele pode acessar e modificar. Veja como fazer isso aqui.
Procure gerar tokens de forma que ele seja válido somente por um período razoável de tempo. Isso garante que se um token vazar, ele não poderá ser usado para sempre.
Valide as respostas devolvidas pelo nosso SDK
Sempre que o usuário for realizar uma operação que irá garantir a ele mais permissões dentro do seu sistema (como uma validação de dispositivo ou antenticação facial, por exemplo), envie a resposta assinada (JWT) do nosso SDK para seus servidores e confira se tudo está nos conformes (tanto os dados do payload quanto a assinatura!).
Se você validar essa resposta somente no seu aplicativo, um atacante pode modificar seu aplicativo e remover essa validação. Além disso, um atacante também pode interceptar e modificar as requests.
A única maneira segura de se proteger disso é enviando o JWT para seu servidor e conferindo tudo por lá antes de liberar acesso ao usuário.
Temos algumas dicas de como fazer isso aqui.