Back-End

3 out, 2016

Melhore a proteção do seu PHP OAuth Client Application contra vazamentos de conta de usuário

Publicidade

Introdução

Atualmente, o OAuth é o protocolo mais popular usado por milhões de aplicativos para chamar APIs baseadas em HTTP.

Normalmente, os desenvolvedores de aplicativos precisam registrar um pedido para obter os seus valores de credenciais. Para OAuth versão 2, os valores de credenciais consistem em um ID de cliente e uma chave secreta. Esses valores são utilizados para obter um valor de token a partir do servidor OAuth API. Esse token é usado para executar as chamadas de API reais.

A classe de biblioteca cliente PHP OAuth cuida de todo o processo de uma forma suave, para que os desenvolvedores PHP não tenham que ficar enterrados na documentação do protocolo OAuth para aprender e implementar medidas do protocolo OAuth. A classe suporta APIs que implementam as versões OAuth 1 e 2 do protocolo de forma integrada.

No entanto, é importante entender alguns aspectos de segurança relacionados com o protocolo OAuth, assim os desenvolvedores podem entender sobre certos riscos que podem comprometer suas aplicações, independentemente se você usar a biblioteca cliente PHP OAuth ou qualquer outra biblioteca de cliente em PHP ou qualquer outra linguagem.

php-oauth-1

Mantendo as suas credenciais de aplicação seguras

Como você deve ter entendido a partir da introdução acima, suas credenciais de aplicação, o ID de cliente e a chave secreta são os valores que identificam o seu aplicativo cliente para o servidor da API.

Se por algum motivo as suas credenciais de aplicação estão expostas a terceiros que não estejam relacionados ao seu aplicativo, outras pessoas podem chamar as APIs como se fossem donos da sua aplicação.

Dependendo da sensibilidade das informações trocadas com a API que seu aplicativo está usando, vazar suas credenciais de aplicativos pode causar sérios problemas de segurança.

Portanto, o seu aplicativo precisa armazenar as credenciais em um local seguro, como arquivos de configuração que somente o seu aplicativo do lado do servidor pode acessar.

A sensibilidade de contas de desenvolvedor e credenciais de aplicação

Sempre que um desenvolvedor precisar obter as credenciais de API da sua aplicação baseada em OAuth, ele geralmente precisa fazer login em uma conta de desenvolvedor no servidor da API para registrar um novo aplicativo ou acessar um criado anteriormente para a sua aplicação.

Por isso, é muito importante garantir a segurança de acesso à sua conta de desenvolvedor no servidor da API. Se alguém invade sua conta de desenvolvedor, o aplicativo pode ser comprometido.

Contas de usuário versus contas de API para desenvolvedores

Se você, como um desenvolvedor de aplicativos, usar um determinado site ou aplicativo móvel como usuário regular, idealmente você não deve usar a mesma conta como um desenvolvedor. Dessa forma, se alguém invade sua conta de usuário regular, não vai ter acesso às credenciais de API da conta.

Por exemplo, se você tem uma conta de usuário no Google sob o e-mail regularuser@gmail.com, é recomendável que você use uma conta Google diferente para registrar aplicativos no console de desenvolvedor do Google, por exemplo, como developer@mysite.com, talvez até utilizando diferentes contas do Google com diferentes endereços de e-mail para cada aplicativo Google API que você registrar.

Então, não use o mesmo endereço de e-mail ou a mesma senha da conta de desenvolvedor em qualquer outra aplicação ou outra API, isso reduz as oportunidades de abuso de informações caso a conta de desenvolvedor for roubada.

Tenha em mente que alguns sites que fornecem APIs exigem que você use uma conta de uma pessoa real, que também utiliza o mesmo site. Esse é o caso, por exemplo, do Facebook.

Descubra quais APIs dos sites que você usa vazaram dados de contas de usuários

Infelizmente, às vezes acontece de os sites serem comprometidos e os dados de várias contas de usuário serem vazados.

Dados de usuários vazados não significam que as senhas ou as credenciais de aplicativo também vazaram, mas, se algum detalhe dessas contas também vazaram, sua aplicação pode estar comprometida.

Nós não sabemos de todos os sites que fornecem APIs que tiveram informações sobre a conta do usuário vazadas, mas existe um site chamado ‘;–have i been pwned? que tem um banco de dados de muitos sites conhecidos publicamente que tiveram dados de conta de usuário vazadas no passado.

Basta ir ao site, digitar seu endereço de e-mail da conta de desenvolvedor que você usou para registrar aplicativos de API, e ele vai dizer se o endereço de e-mail fornecido foi encontrado em dados de sites que vazaram os dados do usuário, eventualmente devido a violações de segurança.

O que você pode fazer para mitigar os problemas de vazamentos de dados de contas de desenvolvedor?

Bem, a primeira coisa que você precisa fazer é mudar sua senha de conta de desenvolvedor nos sites que tenham APIs descobertas. Seus dados de conta desenvolvedor podem ainda estar sendo usados, mas pelo menos as senhas das contas (ou hashes de senhas) não funcionarão mais.

Outra coisa que você deve considerar é usar uma nova conta de desenvolvedor com um endereço de e-mail diferente para novos aplicativos registrados com as APIs fornecidas pelo servidor.

Se você não pode fazer isso porque você precisa que as aplicações atuais continuem a funcionar, para que possa continuar a usar tokens de acesso previamente obtidos, poderá solicitar a reemissão de novas chaves secretas de token cliente para a sua aplicação, de modo que as mesmas chamadas do aplicativo à API continuem funcionando e se a chave secreta cliente antiga deixar de funcionar, ela também terá vazado.

Conclusão

Não há nada 100% seguro na Internet, nem mesmo na vida em geral. Muitos sites foram invadidos e os seus dados de conta de usuário foram roubados.

Se você desenvolveu aplicativos que usam OAuth, esses fatos devem ser preocupantes, porque suas informações de conta de desenvolvedor em sites do servidor da API podem ter sido furtadas.

Este artigo propôs várias maneiras de mitigar o problema e minimizar as chances de causar danos às suas aplicações.

Se você gostou deste artigo, compartilhe com seus colegas, já que eles gostam quando você compartilha informações úteis como esta com eles.

***

Manuel Lemos faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://www.phpclasses.org/blog/package/7700/post/11-Improving-the-Protection-of-your-PHP-OAuth-Client-Application-Against-User-Account-Leaks.html.