Você foi selecionado, entre inúmeros candidatos, a compor a equipe de tecnologia da informação (TI) de uma grande emissora de televisão. Neste momento, a equipe de TI se prepara para colocar no ar o site de votação de seu reality show, porém estão se deparando com uma ameaça ao seu sistema de votação, os bots, termo diminutivo de Robot, são robôs digitais que tem o objetivo de oferecer um serviço automatizado para realizar tarefas, em geral, pré-determinadas. São capazes de imitar comportamentos humanos e vêm sendo utilizados na web a fim de influenciar diversos assuntos, e um loop de votação.
A equipe não sabe o que fazer para controlar esse problema, e é exatamente por esse motivo que você foi contratado pela emissora.
A equipe contém a documentação de requisitos (especificação de requisitos), onde o requisito funcional RF1 – fazer login é detalhado em:
Usuário – inserir e-mail
Senha – inserir senha cadastrada pelo usuário (permitir apenas números)
A fim de controlar o fluxo de votação intermitente por bots, você é o responsável por implementar no mínimo duas opções de ajuste no requisito funcional RF1: fazer login, com o intuito de estabelecer uma regra que evite ataques / invasões por consecutivas tentativas de acesso, enviadas por bots que experimentam diversas combinações de usuários e senhas.
Soluções para a tarefa
Resposta: Token e Recaptcha
Explicação:
Opção para o login e senha:
Pode ser feito através do Token
Neste método, após ter um login e senha validados pelo servidor, será criado um token que o usuário receberá em resposta e que permitirá o acesso a algum recurso. O padrão adotado por grande número das aplicações web hoje é o formato JWT (JSON Web Token) e ele fará com que o token seja assinado da forma correta para haver a autenticação da requisição a um recurso no servidor.
É importante salientar que informações do usuário não ficarão salvas no servidor. Elas são gravadas no token, que tem um período geralmente curto para expiração, por volta de 10 minutos. O tempo dependerá dos requisitos de segurança da aplicação.
Se um token chegar a expirar, uma solução seria pedir ao servidor um novo token válido. Isso acarretaria um novo processo de autenticação por login e senha ou por outro método escolhido. Porém, não é prático que a aplicação solicite usuário e senha novamente a cada expiração. Uma estratégia para lidar com essa situação seria usar refresh token.
Como uma solução comum, costuma-se enviar tanto o token de acesso quanto o refresh token, assim que a autenticação na aplicação é realizada. No entanto, o refresh token possui um tempo maior para a expiração, e neste caso não armazenamos nenhuma informação de usuário.
Outra característica do refresh token é que ele é de uso único, então na próxima solicitação é enviado um token e um novo refresh token.
Para verificação se é humano ou robo:
Pode ser usado o sistema de reCAPTCHA, que atualmente é o mais conhecido e usado.
O objetivo é limitar o acesso e tráfego criado por bots e outros tipos de robôs que vasculham a Internet todos os dias gerando tráfego artificial, disparando spams e produzindo ataques.
O reCAPTCHA é um serviço de CAPTCHA atualmente mantido pelo Google e que consiste em uma aplicação do teste de Turing: um desafio de simples solução por humanos, mas que se mostra insolúvel, ou muito difícil de resolver, por um computador, robô de Internet ou mesmo uma inteligência artificial.
A principal utilidade do reCAPTCHA, bem como de outros sistemas parecidos, é a de filtrar tráfego em websites e apps, impedindo que softwares que vasculham a Internet criem tráfego artificial ou mesmo sobrecarreguem um serviço, tornando o seu acesso mais difícil por usuários reais. Essa preocupação se faz necessária, pois a Internet é cheia dos chamados crawlers, e outros softwares automatizados, encarregados de vasculhar e indexar conteúdo de forma automática, acessando milhares de páginas por segundo. A medida impede spam, torna a Internet mais segura e aumenta a eficiência de sites do mundo todo.