;(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

Sua chave Pix vazou? Saiba o que fazer para se proteger de golpes

Imagem ilustrativa do Pix, sistema de pagamentos instantâneos do Banco Central - André Luís Ferreira/Fotoarena/Estadão Conteúdo
Imagem ilustrativa do Pix, sistema de pagamentos instantâneos do Banco Central Imagem: André Luís Ferreira/Fotoarena/Estadão Conteúdo

Lucas Carvalho

De Tilt, em São Paulo

21/01/2022 17h51

O Banco Central revelou nesta sexta (21) um vazamento de dados pessoais vinculado a chaves Pix que estavam com a empresa de pagamentos o. Mais de 160 mil chaves Pix, acompanhadas de nomes, Fs e dados bancários, ficaram expostos.

Não é a primeira vez que chaves Pix são vazadas por descuido ou algum incidente com as empresas responsáveis por guardar esses dados. Em setembro do ano ado, informações cadastrais vinculadas a 414 mil pessoas vazaram do Banco do Estado de Sergipe (Banese).

A consequência desse tipo de vazamento é que os dados podem ir parar na mão de cibercriminosos. Ao cruzar esses dados com outros vazamentos antigos, bandidos podem invadir mais facilmente sua conta bancária ou implementar golpes de phishing mais elaborados.

Segundo especialistas ouvidos por Tilt, a dica para evitar que seus dados sejam vazados é a mesma para chaves Pix ou qualquer outra informação pessoal: cuidado ao compartilhar. Não faça cadastro em sites que não pareçam confiáveis e evite postar suas informações publicamente nas redes sociais.

Mas se mesmo tomando todo o cuidado sua chave Pix cair na web graças a um vazamento imprevisível, a dica é ficar atento: as tentativas de golpe contra você podem aumentar.

"Algumas dicas de segurança são importantes para evitar golpes digitais, tais como ficar atento a qualquer movimentação desconhecida nos próximos meses e aos contatos que chegarem via SMS, aplicativos de mensagem ou redes sociais, mesmo que informem seus dados pessoais, pois eles podem ter sido vazados em outros incidentes de segurança", diz Emilio Simoni, executivo-chefe de segurança da empresa de antivírus PSafe.

De acordo com o advogado Nagib Barakat, especialista em direito digital, é possível exigir legalmente uma indenização pelo vazamento dos dados. Mas ele alerta que a Justiça tende a dar mais razão para vítimas de vazamentos que tiveram os dados usados em alguma fraude bancária.

"Desde que você tenha ado algum dano decorrente daquele vazamento e o banco não tomou os cuidados necessários de acordo com a política de segurança do Banco Central, nem está de acordo com a LGPD, você tem a possibilidade de buscar uma indenização", diz. "Mas sempre vinculada à extensão do dano que você sofreu."