Como evitar o uso indevido por terceiros do que se pretende que seja uma API privada (evitando o que aconteceu com o Snapchat)?

5

Eu nunca usei o Snapchat e não pretendo, mas tenho lido sobre o que aconteceu com eles com relação à recente cobertura da mídia sobre fotos sendo vazadas, especialmente porque eu também estou escrevendo uma API para o meu aplicativo agora e eu quero evitar que isso aconteça comigo.

Após analisar o que aconteceu, parece que o Snapchat não fez nada de errado. Parece que um aplicativo da web de terceiros farejava suas chamadas de API - algo que não surpreende, qualquer um pode fazer isso, e é por isso que as APIs exigem autenticação, mas isso pode variar, mas provavelmente por algum tipo de token. >

Em qualquer caso, a API do Snapchat exigia autenticação, por isso achei que eles seriam seguros, mas os aplicativos de terceiros fizeram com que os usuários inserissem seus nomes de usuário e senhas no aplicativo, permitindo login e autenticação.

Lembre-se de que este é um aplicativo de terceiros, não o aplicativo oficial do Snapchat. Eu nunca teria esperado que os usuários fizessem algo assim, é como doar as chaves do seu carro para qualquer pessoa que passe por ele em vez do manobrista do hotel.

Agora, ao ponto, existem técnicas para evitar que isso aconteça e eu posso solicitar minha API? Não tenho certeza de como posso me impedir de acabar na mesma situação.

    
por Skill M2 16.10.2014 / 19:04
fonte

2 respostas

6

É impossível evitar que esse problema ocorra completamente. Há duas coisas que você pode fazer para ajudar , mas não para migrar completamente o problema:

  • Usar somente SSL: se você controlar o cliente e o servidor, não há motivos para não criptografar o tráfego. Isso impede que as pessoas farejam suas chamadas da API estudando seu tráfego. Ele também protege o usuário segredos e ajudar a evitar ataques man-in-the-middle.

  • Use uma chave de API. Essa deve ser uma chave oculta que pode ser anexada a transações que valida que a chamada da API veio de um aplicativo aprovado. Observe que isso só é útil se o tráfego for criptografado, pois a chave é inútil se for visível sobre texto sem formatação.

Novamente, não é possível se proteger completamente, já que a natureza da Web é bastante insegura. Não foi construído com segurança em mente inicialmente, então você deve assumir que qualquer coisa exposta publicamente pode / será usada por outra parte em algum momento.

    
por 16.10.2014 / 22:30
fonte
0

Uma possível solução (mas com um pequeno compromisso) seria limitar o número de tokens válidos que um usuário específico pode ter a qualquer momento. Isso não irá PARAR a capacidade de terceiros de acessar o site, no entanto, introduziria um nível de aborrecimento para um usuário que está usando sua API de maneira inadequada. Se você definir esse limite como 1, quando o aplicativo de terceiros fizer login na conta do usuário, ele desautorizará outras sessões.

    
por 24.10.2014 / 19:48
fonte