O processo de construção de softwares voltados para a nuvem requer um design com maior complexidade quando comparado ao desenvolvimento de aplicações desktop por inúmera razões, um dos aspectos mais importantes a ser considerado antes mesmo do início do desenvolvimento é a segurança. Segurança em software possui várias vertentes, entre elas as mais debatidas são: autenticação e autorização.
Uma das premissas da construção de qualquer sistema web é a segurança dos dados, independente da natureza ou visibilidade a aplicação deve permitir o acesso aos dados somente através dos meios disponibilizados pela mesma (como a API – Application Programming Interface, ou Interface de programação da aplicação). A tentativa de extrair dados de outra forma que não seja através das APIs é algo ilegal e punível perante a lei.
Para que possamos alinhar o entendimento do funcionamento deste processo, é importante entender que ao requisitar a abertura de uma determinada página na web o navegador instalado em sua máquina realizará uma ou mais requisições de todos os elementos que compõem a página desejada, com isso, o motor do navegador será capaz de renderizar o conteúdo. Após este momento o usuário poderá providenciar as informações de autenticação (usuário e senha) de forma local, e somente quando solicitado, o mesmo deverá realizar o envio para o servidor na nuvem, onde iniciará os processos de:
Autenticação
Como o nome já diz, é necessário que o servidor confirme que a requisição de acesso aos dados tenha vindo de uma fonte conhecida, este é o processo que antecede a autorização de acesso. Ao realizar a requisição de autenticação, o servidor deverá responder para o cliente (neste caso a sua máquina) se os dados fornecidos estão condizentes com o banco de dados da aplicação, onde em muitos casos a aplicação não armazena o usuário e senha, e sim uma combinação de caracteres (HASH) derivados da criptografia dos dados recebidos, o que torna a aplicação de certa forma mais segura caso ocorra vazamento de dados acidentalmente.
Autorização
Após o reconhecimento da autenticidade do usuário, o sistema deverá restringir o acesso aos dados de acordo com critérios pré estabelecidos, desta forma é possível proteger dados sensíveis, caso contrário não seria ético se seus colegas de trabalho tivessem acesso ao seu contracheque.
Providenciar mecanismos que permita autenticar e restringir acesso não são os únicos indicadores que garantem a segurança da aplicação. Um dos tipos de ataque a sistemas web é o “Men in the middle”, traduzindo e em outras palavras, é quando alguém ou algum algoritmo intercepta os dados entre o cliente e servidor, com este tipo de ataque terceiros poderão identificar-se para o servidor com as suas credenciais e ter acesso a dados restritos. No cenário ideal, o usuário deverá fornecer os dados de autenticação que por sua vez deverão ser criptografados antes mesmo do envio para o servidor, no qual dificulta a interceptação de dados entre a sua máquina e o servidor na nuvem.
Para compor a segurança do acesso aos dados, as aplicações web trabalham com a troca de tokens de acesso, dessa forma após realizar o envio do usuário e senha o servidor deverá responder com um conjunto de caracteres, este token será utilizado para todas as futuras requisições do cliente, porém para melhorar a segurança da aplicação os tokens devem ser renovados periodicamente. Um outro método que auxilia no aumento da segurança é a técnica chamada “Two factor authentication” (dupla verificação), no qual consiste na utilização de SMS, e-mail, ligação, QRCode, etc., para realizar dupla verificação de autenticação, em alguns casos é também possível utilizar recursos do “Machine learning” para acompanhar e proteger a sessão de cada usuário de acordo com o comportamento dos mesmos.
Contudo, é muito importante que não só desenvolvedores mas também usuários finais estejam alinhados com as técnicas de segurança das aplicações voltadas para a web/nuvem, onde este é somente um dos vários fatores que evidenciam a importância da contratação de profissionais experientes e qualificados para a construção de sistemas de qualquer natureza, como citado no início do texto, seja lá qual for a sua aplicação nenhum dado poderá ser exposto ou acessado sem as devidas permissões legais.
Por Yrineu Rodrigues, juazeirense, desenvolvedor de software. Atualmente morando em San Jose, CA
*Este texto é de inteira responsabilidade do autor e não reflete, necessariamente, a opinião do Revista Cariri