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

Esse conteúdo é antigo

Após possível ataque hacker, Ministério da Saúde faz alerta sobre golpes

Secretário-executivo do Ministério da Saúde, Elcio Franco fez pronunciamento sobre problema nos sistemas da pasta - Divulgação/Palácio do Planalto
Secretário-executivo do Ministério da Saúde, Elcio Franco fez pronunciamento sobre problema nos sistemas da pasta Imagem: Divulgação/Palácio do Planalto

Do UOL, em São Paulo

13/11/2020 17h55

O Ministério da Saúde itiu hoje que pode ter sido alvo de um ataque hacker na semana ada, desde quando vem enfrentando problemas para restabelecer a normalidade em seus sistemas. O secretário-executivo da pasta, Elcio Franco, também aproveitou para alertar a população sobre tentativas de golpes que estariam ocorrendo usando o nome do Ministério.

"Um vírus afetou nossa rede de tecnologia na semana ada. Há indícios de que a pasta também foi alvo de tentativa de ataque cibernético, embora não haja um laudo conclusivo", disse o secretário, prometendo que a pasta restabelecerá a normalidade em seus sistemas até segunda-feira (16).

Franco reconheceu que o problema afetou a contabilização dos dados sobre a pandemia de covid-19 em alguns estados. Segundo o secretário, isso aconteceu porque o Datasus (Departamento de Informática do Sistema Único de Saúde) bloqueou algumas bases de dados como medida de precaução.

"Todas as medidas necessárias para preservar a integridade de sistemas, servidores e de dados do Ministério da Saúde foram tomadas. Não houve comprometimento, sequestro ou vazamento de informações", explicou.

"A dificuldade de o à rede nos últimos dias, enfrentada por alguns estados, se deu pelo bloqueio da base dados, que foi realizado para preservar as informações do Ministério", completou o secretário.

Franco também fez um alerta para possíveis golpes que pedem por telefone dados de usuários do SUS (Sistema Único de Saúde).

"O Ministério da Saúde não está realizando nenhuma pesquisa, tampouco solicita dados particulares via telefone aos usuários do SUS. Contamos com o apoio da imprensa para alertar nossa população e evitar golpes que estão sendo aplicados em nome do Ministério da Saúde", afirmou.