Identificando e bloqueando transações fraudulentas com FingerprintJS
Introdução
Se você tem uma plataforma que lida com vendas e sua empresa apresenta um grande volume de transações feitas, é comum que problemas relacionados a fraudes aconteçam devido a elementos externos. Geralmente, o fraudador utiliza-se de informações pessoais que já foram vazadas anteriormente para efetuar a compra e, mesmo com sistemas avançados de bloqueio, a identificação de um fraudador é um trabalho difícil visto que o mesmo, se for esperto, vai utilizar-se de mecanismos para ocultar a sua identidade. Infelizmente, não existe uma formula mágica para que as fraudes não aconteçam em um site/aplicativo o que pode ser feito é introduzir camadas de segurança que dificultem a fraude em si.
Para esses casos podemos pensar em um bloqueio do dispositivo a qual o fraudador está tentando efetuar a compra. Nesse artigo irei focar apenas em um cenário onde a transação está sendo feita por meio de um navegador.
Fingerprint do navegador
Um fingerprint, no mundo digital, nada mais é do que uma identidade digital do usuário que é composta por informações de seu hardware, aplicativos, extensões e preferências de navegação. Informações como fontes instaladas, resolução de tela e navegador usado são exemplos de elementos que são parte do fingerprint, reunir essas informações faz com que seja mais fácil diferenciar seu computador de outros.
Implementação do FingerPrintJS e outras técnicas
Tendo as informações supracitadas em mente podemos inferir que o bloqueio de um determinado equipamento, utilizado por um fraudador, fica mais fácil; bastando atribuir um identificador nesse conjunto de dados que foram reunidos. Apesar dessa técnica apresentada ser uma das mais precisas e difícil de ser burlada outras técnicas também podem ser utilizadas, como a detecção por meio do canvas. A detecção por meio de canvas que pode ser resumido por meio de 3 passos
1 — Ao usuário acessar a página um script desenha um texto com uma fonte e tamanho, posteriormente, adicionando cor ao desenho feito
2 — O script faz uma chamada para API do canvas obetendo o pixel da tela em um formato base64
3 — Após isso é gerado um hash que vai servir como fingerprint do usuário
Essa biblioteca do Javascript captura diversas informações além das já citadas e pode ser utilizada para diversos casos: Roubo de conta, Fraudes em transações, SPAM, entre outros. De acordo com o que apresentada na página o seu nível de acurácia é de 99.5%, sendo possível até mesmo guardar um histórico de visita da página além de está de acordo com a diretrizes estabelecidas na GDPR.
Exemplo de implementação
`
Exemplo FingerprintJSFingerprintJS Example
<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
<script>
// Aguarde até que o documento esteja carregado
document.addEventListener("DOMContentLoaded", function () {
// Crie uma instância do FingerprintJS
const fpPromise = FingerprintJS.load();
// Obtenha a impressão digital do navegador
fpPromise
.then((fp) => fp.get())
.then((result) => {
// Exiba a impressão digital no elemento com id "fingerprint-result"
document.getElementById("fingerprint-result").textContent = JSON.stringify(result, null, 2);
})
.catch((error) => console.error("Erro ao obter a impressão digital:", error));
});
</script>
`