Como usar um validador de CPF para prevenir fraudes numa loja online

Tempo de leitura: 3 minutos

Não há muito tempo tive de enfrentar um caso com um cliente em relação à sua loja online e à forma como ele processava as informações das compras dos seus usuários.

No passado, ele teve alguns problemas com compras fraudulentas em sua loja online. Em especial no que respeita à utilização de números CPF falsos, que não correspondiam aos dos compradores.

Neste sentido, tivemos de enfrentar duas questões:

  1. Implementar um sistema de verificação dos números CPF
  2. Devia ser eficiente e de baixo custo.

Implementação de um sistema de verificação do CPF

Este foi o primeiro desafio que encontramos. Procurávamos informações de várias fontes, até encontrarmos a API da SERPRO (uma ferramenta disponibilizada pelo Ministério da Fazenda).

Esta API permitiu-nos minimizar o risco de fraude do número de CPFs falsos.

O processo foi muito simples. Nós simplesmente tivemos que fazer uma consulta do cpf indicando o CPF em questão. Como resposta obtínhamos o nome do proprietário do mesmo e sua situação cadastral.

Portanto, podia haver três situações:

  1. Que os dados fossem corretos
  2. Que fosse um CPF inválido
  3. Que fosse um CPF válido, mas que o nome do titular não correspondesse ao nome que nos foi dado no formulário de compra.

Assim, nos casos 2 e 3, simplesmente tínhamos de enviar uma notificação ao utilizador indicando que o CPF não era válido ou que não correspondia aos dados fornecidos.

Até agora tudo bem.

Com isso, no final, conseguimos evitar que alguém com um CPF falso ou errado fizesse uma compra na loja online.

Mas outro problema surgiu rapidamente. O uso da API da SERPRO apresentava um custo associado. Então, quando passamos as 999 solicitações, tínhamos de pagar R$0,66 por consulta. O que era pouco eficiente, uma vez que as margens de venda foram desnecessariamente agravadas.

A solução?

mulheres desenvolvedoras

Implementar um validador CPF no formulário

Esta foi à medida que nos ajudou a reduzir o número de petições em 32%. Imagine o custo poupado.

A forma como o fizemos foi a seguinte.

Sabíamos que o CPF era gerado a partir de um algoritmo, pelo que o procedimento para o validar teria de ser algo que pudesse ser programado, uma vez que no início seguia uma lógica matemática. E, na verdade, conseguimos obter o código em Java Script para validar CPF do site o gerador de cpf. Isto poupou-nos várias horas de desenvolvimento.

O que fizemos com o código foi que para uma pessoa inserir seu CPF completo no formulário, este fosse validado automaticamente enviando uma notificação em caso de erro ao usuário para corrigi-lo.

Desta forma, podíamos evitar todas essas petições derivadas de erros ao inserir os números. Claramente, havia alguns CPF que, embora colocados de má fé, eram considerados válidos. Mas estes eram detectados na 2ª fase, que era a consulta do CPF através da API da SERPRO. Quando vimos que o nome retornado não correspondia ao que foi dado no formulário, bloqueamos a operação.

Portanto, se você tiver uma loja online ou trabalhar com clientes com este perfil, pode ser aconselhável considerar a implementação desta técnica para evitar ações fraudulentas.

IMPORTANTE

Conforme esclarecemos em outras oportunidades ao longo do texto, a ferramenta que você encontra aqui em nosso site tem finalidade limitada.

O limite é apenas ajudar desenvolvedores, analistas, estudantes e/ou testadores em experimentos de softwares e aplicações em desenvolvimento. Qualquer eventual mau uso da ferramenta é de responsabilidade exclusiva do próprio usuário.

1 comentário

  1. Silvair Leite Soares

    Ótimo artigo. Parabéns!

    Sempre adoto a prática de fazer validações em camadas:

    1 – Frontend: Campos obrigatórios, CPF, CNPJ, IE, email, etc;

    2 – Backend: Repito as validações básicas do passo 1. Pois um usuário mais avançado pode facilmente burlá-las;

    3 – Backend: Faço as validações mais custosas (processamento, memória, cu$to ) com acesso à storage, bd api, etc.

    Responder

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *