Recursos especiais neste artigo:
Conteúdo sobre Boas Práticas
Para que serve este artigo:
Neste artigo, trataremos dos principais recursos nativos do SDK do iOS utilizados para realizar transferência de dados entre os dispositivos móveis da Apple e servidores externos a eles. Abordaremos a importância de verificarmos a origem de cada requisição realizada e suas respectivas respostas, certificando que os dados sejam trafegados em ambientes conhecidos e seguros, maximizando cada vez mais o nível de segurança dos aplicativos. Iremos abordar tanto a utilização de classes e recursos de alto e baixo nível, podendo inclusive interagir em um nível de granularidade maior no que tange à protocolos de rede.
Atualmente, inúmeros são os aplicativos que envolvem a transferência de informações pessoais dos usuários, tais como números de cartão de crédito e CPF, entre os dispositivos móveis e os servidores nos quais estas informações serão processadas. Com isto, faz-se necessário transferir os dados de maneira segura, minimizando ao máximo as possibilidades de violação dos mesmos. Isso ganha ainda mais importância se obsevarmos uma contínua penetração dos smartphones no mercado, aumentado exponencialmente a quantidade de usuários utilizando aplicativos deste contexto.
Dessa forma, veremos algumas das melhores práticas a serem aplicadas durante o desenvolvimento de aplicativos para que se obtenha a maior segurança possível nos momentos em que será necessária a transferência de dados entre os dispositivos móveis da Apple e os servidores nos quais estes mesmos dados serão processados.
Os dispositivos móveis nos trazem não apenas a possibilidade de estarmos conectados durante todo o tempo, como também de realizarmos tarefas que podemos considerar críticas, como efetuar todo tipo de transação bancária em qualquer lugar que estivermos – e que tenhamos conectividade, claro.
É necessário levarmos em consideração que não temos o controle dos locais através dos quais os usuários se conectam a internet. Esta conexão pode ser realizada através de redes privadas – em casa, no local de trabalho, como também através de redes públicas – restaurantes, aeroportos, shopping centers, etc. Este fator eleva a preocupação que os desenvolvedores devem ter ao escreverem códigos que irão trafegar dados críticos dos dispositivos móveis para os servidores nos quais estes serão processados.
Para obter a máxima segurança possível, é importante que as requisições sejam feitas através de um canal seguro de transações. Neste caso, deve-se utilizar HTTPS. Outra medida importante a ser adotada é a criptografia dos dados coletados no dispositivo móvel, sendo esta feita em nível de código.
Apesar de sabermos que os dados trafegados por HTTPS já são criptografados pela camada de transporte, seja via SSL ou seu sucessor, o TLS, existem históricos de violação deste tipo de comunicação.
Para cada um dos cenários, faz-se necessário implementar os métodos mais adequados, a fim de se obter o correto tratamento das transações para as possíveis variantes que podem decorrer das mesmas.
Quando uma requisição HTTPS é feita através de um browser, caso ocorra qualquer situação que possa levantar suspeita com relação ao certificado, um aviso é emitido para que o usuário opte por continuar navegando naquele site ou aborte a operação. Já nas requisições realizadas através dos aplicativos, por padrão este tipo de aviso não é emitido, abrindo uma grande brecha de segurança. Portanto, é importante que sejam implementados métodos e aplicadas tratativas em nível de código para obter a maior segurança possível.
Implementando métodos de conexão
Neste primeiro exemplo utilizaremos as classes do framework Foundation, implementando os métodos de delegate da classe NSURLConnection que serão disparados a partir de uma requisição realizada.
Na Listagem 1 é realizada uma requisição utilizando um host com HTTPS.
Listagem 1. Realizando uma requisição.
NSURL *url = [NSURL URLWithString:@”http://seguro.devmedia.com.br/”]
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]
initWithURL:url];
conn = [[NSURLConnection alloc] initWithRequest:request
delegate:self];
...
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.