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

Já são 9 bilhões de senhas vazadas! Como saber se a sua foi exposta e agir

Estúdio Rebimboca/UOL
Imagem: Estúdio Rebimboca/UOL

Márcio Padrão

De Tilt, em São Paulo

26/10/2019 14h51

Vazamento aqui, vazamento ali... Já são mais de 9 bilhões de senhas expostas em diversos casos de hackeamentos pelo mundo, segundo a Axur. A empresa, especializada no monitoramento e reação a crimes digitais, mantém no site MinhaSenha um banco de credenciais vazadas para que as pessoas possam saber se foram afetadas.

A base de dados foi atualizada recentemente e ficou três vezes maior que a primeira versão.

O funcionamento do site é simples. Basta preencher um campo na página principal com o seu email pessoal ou corporativo e clicar na lupa da busca. A página seguinte diz se o endereço está ou não na lista de contas vazadas. Se sim, ele envia um email com as suas senhas vazadas —trocando parte dos caracteres dela com asteriscos— e uma orientação para alterar sua senha.

No ar há dois anos, o sistema do MinhaSenha também analisa o que chama de "microvazamentos espontâneos" (brasileiros ou não) de até 50 mil credenciais (s e senhas) diariamente monitorados pela empresa. Seu banco de dados contém vazamentos que datam de 2009 para cá.

Como essas senhas são "encontradas"?

Robôs da Axur vasculham a web tradicional, a deep e a dark web em busca de informações sensíveis que possam apresentar algum risco para pessoas físicas e empresas. Em um dos últimos grandes vazamentos identificados, mais de 4 milhões de credenciais vazadas foram achadas.

Segundo Fabio Ramos, fundador da Axur, o expressivo aumento das ocorrências de vazamentos de dados "mostra a urgência do monitoramento e proteção adequada de senhas e demais dados sensíveis, corroborando a aplicação da Lei Geral de Proteção de Dados". Caso você tenha usado o MinhaSenha e queira tirar seu endereço do banco de dados do site, basta enviar uma solicitação para [email protected].

O MinhaSenha é semelhante ao Have I Been Pwned. Na plataforma, você pode descobrir se o seu email ou a sua senha já foram comprometidos em alguma brecha na história —ele oferece até mesmo em quantos vazamentos seu email já esteve envolvido.

Como se proteger

Além da alteração da senha vazada, o usuário pode seguir algumas dicas.

  • Considere também sempre mudar senhas de tempos em tempos.
  • Use senhas fortes para contas mais importantes ou confidenciais (como internet banking ou redes sociais)
  • Considere usar um gerenciador de senhas
  • Ative a autenticação de dois fatores sempre que possível nos serviços

SIGA TILT NAS REDES SOCIAIS