;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Viu promoção de Dia dos Namorados com Boticário no WhatsApp? É golpe

Novo golpe tem feito vítimas no WhatsApp - Getty Images
Novo golpe tem feito vítimas no WhatsApp Imagem: Getty Images

Naiara Araújo

Colaboração para Tilt

11/06/2020 17h39

O Dia dos Namorados e o uso indevido da marca O Boticário são as iscas de uma nova leva de golpes por aplicativo de mensagens como o WhatsApp. É uma estratégia antiga, mas que ainda pega muita gente. De acordo com o Dfndr Lab, laboratório especializado em segurança digital, foram 39 mil vítimas nos últimos sete dias.

Esse tipo de golpe, conhecido como phishing, reaparece cada vez mais sofisticado em datas comemorativas. Desta vez os cibercriminosos usam uma abordagem promocional de "Cadastre e ganhe" para atrair interessados devido a uma suposta facilidade para ganhar um brinde.

Os criminosos até inventaram comentários falsos de usuários que teriam recebido o brinde, para dar mais credibilidade para a página e atrair mais pessoas.

Entenda o golpe

Com links enviados pelo WhatsApp, uma falsa promoção de Dia dos Namorados se ando pela rede de cosméticos O Boticário promete um perfume masculino ou feminino para quem se cadastrar. O objetivo é conseguir os dados pessoais dos usuários que caírem no truque.

Boticario 1 - Reprodução - Reprodução
Imagem: Reprodução

boticario 2 - Reprodução - Reprodução
Imagem: Reprodução

Para ganhar o prometido "brinde", o usuário deve fornecer alguns dados pessoais. Outra condição da promoção é que a vítima ree o link para outros cinco contatos do WhatsApp, o que facilita a disseminação do golpe.

No site falso, também é solicitado a permissão a notificações no navegador. Se o usuário permitir, o cibercriminoso pode enviar a ele outros golpes de phishing.

boticario 3 - Reprodução - Reprodução
Imagem: Reprodução

Segundo Emilio Simoni, diretor do Dfndr Lab, a vítima é prejudicada com o vazamento desses dados pessoais e a exposição a outros golpes.

Procurada pela reportagem, O Boticário informou que já está tomando as providências cabíveis em relação ao caso. A marca reforça que a mensagem é falsa e que todas as promoções são realizadas sempre nos canais oficiais.

"Orientamos não ar o conteúdo para que não danifique(m) seu(s) equipamento(s) eletrônico(s). Em caso de dúvidas, a empresa coloca à disposição todos seus canais de comunicação oficiais para esclarecimentos sobre promoções válidas", informou O Boticário.

Em resposta a Tilt, o WhatsApp recomendou que todos os usuários usem a verificação em duas etapas. Em caso de uma eventual clonagem de conta, a empresa sugere reinstalar o app e solicitar a verificação da conta via SMS.

Outras dicas oferecidas pelo Dfndr Lab são:

  • Mantenha o seu celular protegido com soluções que identificam phishing em aplicativos e redes sociais
  • Cuidado com os links que chegam via WhatsApp e pedem cadastro.
  • Não compartilhe dados pessoais em sites suspeitos e busque sempre os canais de comunicação oficiais das marcas.
  • Desconfie de promoções, brindes e descontos que chegam no WhatsApp.