Estou criando um aplicativo que gostaria de comunicar com meu site. O aplicativo precisará obter dados de um usuário em particular do banco de dados do site. Não estou claro quanto à melhor maneira de fazer isso.
Eu vi uma maneira de fazer isso, por exemplo, é criar uma página de login no aplicativo que, em seguida, acessa uma lógica login.php no meu site. Isso é conveniente porque eu posso usar uma base de código para lidar com o login no site e no aplicativo.
Outra solução que eu já vi é usar solicitações JSON para lidar com a comunicação entre o aplicativo e o site. Isso é conveniente porque os objetos JSON são fáceis de criar e analisar.
Eu basicamente gostaria de saber a melhor maneira / comum de fazer essa comunicação ocorrer, quais são os prós e os contras de ter um sobre o outro e quaisquer outros problemas de segurança a serem considerados.
Por exemplo, existe o risco de expor dados confidenciais do usuário ao usar um método sobre o outro? Em caso afirmativo, como isso pode ser evitado? Como e onde as validações de criptografia e usuário entram em jogo aqui?
fonte
Respostas:
Eu recomendaria a criação de uma API REST para seu aplicativo e seu site.
Construir um serviço da Web é mais trabalhoso, mas acho que é muito mais limpo. Se você fizer isso dessa maneira, nem seu site nem seu aplicativo precisarão se preocupar com a conexão e a consulta no banco de dados, pois todos esses detalhes serão abstraídos pela API. Além disso, outro benefício é a segurança: se o seu site for invadido, ele não terá necessariamente acesso ao seu banco de dados, pois ele está fazendo apenas chamadas à API (e não chamadas ao banco de dados). É claro que há muitas coisas a considerar segurança, mas é uma coisa a menos com a qual você precisa se preocupar.
Aqui está um ótimo guia para iniciantes sobre como criar uma API REST no PHP:
http://www.gen-x-design.com/archives/create-a-rest-api-with-php/
fonte
Dependendo da complexidade de seus requisitos, serviços da web REST / JSON ou SOAP.
Para requisitos simples, o REST é mais simples de entender e implementar, especialmente se você preferir JSON sobre XML.
No entanto, se seus requisitos incluírem autenticação, verificação de mensagens, descoberta, não repúdio ou esquema complexo de mensagens, é melhor você mergulhar nas complexidades do SOAP, pois quase todos os problemas são abordados. Embora o SOAP seja mais complexo e difícil de entender, ele lida com quase todas as permutações e variações arquiteturais possíveis em um sistema de mensagens, além disso, ele possui um conjunto muito maduro e abrangente de ferramentas para ajudá-lo no labirinto de APIs. Mas se você não precisar desse nível de sofisticação, fique com o REST.
fonte
A maior desvantagem de uma API é que você está colocando a responsabilidade de fazer solicitações JSON, converter as respostas e exibi-las na página, sob responsabilidade do navegador. Nem todos os navegadores podem fazer isso, intrinsecamente ou porque os usuários desativaram o java-script.
No entanto, essas preocupações diminuíram com o tempo e agora afetam relativamente poucos clientes. No entanto, pode valer a pena fazer um trabalho extra para oferecer suporte a todos os clientes.
As vantagens de uma API são que é muito mais fácil separar a lógica da API dos detalhes da exibição e acessar mais facilmente a API por outros meios que não um navegador (como de outro aplicativo). Isso torna automaticamente o teste da API separado do teste do cliente, o que é bom.
Também é um pouco mais seguro contra ataques de injeção de página (como ataques de script entre sites) porque é mais fácil analisar e escapar adequadamente o JSON do que para um documento HTML (que pode incluir tags de script que contêm java-script). Isso pressupõe que no cliente você analise JSON com um analisador JSON e não use apenas alguma forma de eval (), que não é de todo segura.
Outra vantagem possível é que você pode praticamente eliminar a camada "estrutura da web". Em vez de ASP, JSP, Django, Zend ou qualquer outra coisa, você realmente precisa de uma camada fina para retransmitir o JSON do cliente para o servidor. Portanto, no mínimo, você pode portar essa parte entre estruturas de uma maneira trivialmente fácil, se quiser. Isso pode eliminar uma grande parte móvel do seu aplicativo.
Acho que a criptografia e a validação funcionam basicamente da mesma maneira. Acho que se você tem uma API, é mais provável que lembre-se de não confiar no cliente do que se tiver uma página da Web, pois é possível esquecer que os invasores não precisam usar um navegador como cliente, mas podem enviar cabeçalhos , parâmetros de consulta e postar dados que eles desejam. Este é mais um problema psicológico do que técnico e pode não se aplicar a você.
fonte