Dicas para o desenvolvimento seguro de apps para iOS (parte 2)

Dicas para o desenvolvimento seguro de apps para iOS (parte 2)

Confira a segunda parte desta série de sugestões para o desenvolvimento seguro de aplicativos para iOS que todo programador deve ter em conta.

Confira a segunda parte desta série de sugestões para o desenvolvimento seguro de aplicativos para iOS que todo programador deve ter em conta.

Recentemente, publicamos a primeira parte desta série de dicas de segurança que os profissionais devem ter em conta na hora de desenvolver aplicativos para iOS. Se quiser saber mais sobre o assunto, confira este nosso segundo artigo com novas sugestões.

#7 Tenha em conta que os WebKits não podem ser facilmente atualizados

Muitos desenvolvedores preferem confiar em aplicativos web, e não na lógica do iOS. Essa abordagem tem diferentes vantagens, como facilidade de implementação, flexibilidade ou navegabilidade do conteúdo, e é comum em sistemas multiplataforma que procuram abstrair a maior parte de seu código em um aplicativo web central ao qual os clientes se conectam a partir de sistemas operacionais diferentes.

No entanto, o uso de componentes, como o UIWebViews, pode estar associado a certos riscos de segurança. Por exemplo, novas versões do WebKit não são atualizadas de forma independente, mas são implantadas em pacotes com novas versões do sistema operacional. Devido a isso, qualquer vulnerabilidade descoberta permanecerá no computador até que o sistema operacional seja atualizado.

Se você tem experiência em desenvolvimento web e está pensando em concentrar a maior parte da funcionalidade do seu aplicativo no uso de WebKits, tenha em conta que a falta de atualização pode deixar seus usuários presos a um aplicativo vulnerável.

#8 Evite APIs perigosos

Como mencionamos anteriormente, Objective-C e Cocoa ajudam a prevenir riscos comuns em C e C ++. No entanto, algumas APIs ainda são vulneráveis ​​a ataques de roubo de informações ou à execução de códigos maliciosos. Há muitas verificações de segurança que devem ser realizadas durante a auditoria do código e é impossível mencionar todas elas, mas tenha em conta possíveis erros na hora de formatar incorretamente strings fornecidos pelo usuário (use o especificador % @) ou na hora de administrar a memória (verifique se o tamanho das entradas do usuário estão corretas e evite APIs como strcpy e strcat).

#9 Use links universais para evitar URL Scheme Hijacking

No iOS, quando dois aplicativos de usuário registram o mesmo esquema de URL, o comportamento resultante é indeterminado. Em outras palavras, qualquer um dos dois aplicativos pode acabar processando esse URL. Considerando isso, o sequestro do esquema de URL é uma técnica pela qual um aplicativo malicioso registra no computador o mesmo esquema que seu aplicativo usa, podendo receber erroneamente os dados que são enviados para o seu app.

Para evitar esse tipo de comportamento, a Apple introduziu links universais, ou universal links, no iOS 9. Eles fornecem uma maneira de integração entre sites e aplicativos móveis, para que seu site, autenticado por HTTPS, especifique qual URL pode ser aberta em seu app, garantindo que essas informações não possam ser enviadas para outro aplicativo com ID diferente. Além disso, impede que um malware saiba quais aplicativos estão instalados no dispositivo com o método canUseURL.

#10 Forneça alternativas de autenticação para Touch ID e Face ID

A impressão digital é um recurso muito útil para a verificação de identidade, mas tem a desvantagem de deixar cópias dela onde quer que formos. Além disso, pode ser exigido como prova física em investigações judiciais. Isso talvez tenha motivado a Apple a incluir um mecanismo para desabilitar rapidamente os métodos de autenticação biométricos no iOS 11. Portanto, quando você usa fatores biométricos como um método de autenticação, ele oferece aos usuários a possibilidade de usar a senha antiga e confiável.

#11 Cuidado com o iBeacon e outros recursos de geolocalização

O iBeacon foi desenvolvido para determinar a proximidade do usuário a determinados dispositivos e, como você pode imaginar, é uma fonte bastante precisa de informações sobre seu paradeiro. Certifique-se de que o usuário saiba que sua localização está sendo compartilhada e não armazene os dados de geolocalização, caso não seja preciso utilizá-los. Além disso, sempre que você armazenar dados de data e localização do dispositivo, faça isso de forma que eles não possam ser correlacionados com um usuário específico.

#12 Lembre-se de que você não poderá armazenar as mesmas informações para todos os usuários

As leis de proteção de privacidade podem diferir entre diferentes tipos de usuários e países. Por exemplo, nos Estados Unidos, as crianças estão sujeitas a proteções específicas relacionadas com a lei COPPA e você não poderá salvar determinados dados caso não tenha o consentimento verificado de uma pessoa adulta. Em qualquer caso, sempre inclua uma política de privacidade em seu aplicativo, estruturada de acordo com a legislação local.

Além disso, lembre-se de que, quanto mais informações são armazenadas, mais suscetível você será para ser convocado diante dos tribunais se algum dos usuários estiver envolvido em investigações criminais.

Conclusão

O desenvolvimento seguro é a melhor maneira de proteger as informações dos usuários que utilizarão nossos aplicativos. Sendo cuidadoso em cada passo do caminho e tentando não cometer erros que ponham em risco os dados administrados, evitaremos receber más notícias em um teste de penetração e sermos forçados a redesenhar completamente o sistema.

Esperamos que estas dicas sejam úteis para você e, caso queira destacar outras, escreva na seção de comentários deste post.

Discussão