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

Colocar vírgula no meio da senha a deixa mais segura? Entenda

rawpixel.com/ Freepik
Imagem: rawpixel.com/ Freepik

Felipe Mendes

Colaboração para Tilt, em São Paulo

24/02/2022 04h00Atualizada em 24/02/2022 08h18

Criar uma senha é um momento bem mais importante do que muita gente pensa. Elas são a primeira linha de defesa e proteção de dados em serviços online e redes sociais. Recentemente, uma postagem viralizou no Twitter dizendo que incluir vírgula e ponto e vírgula na combinação seria vantajoso, pois ajudaria a estragar os arquivos vazados, mas isso faz algum sentido?

Especialistas consultados por Tilt dizem que ter caracteres especiais, como a vírgula, ajudam a ter uma senha mais segura, mas só ela em si não ajuda tanto.

A publicação ganhou destaque ao afirmar que as pessoas deveriam colocar "," (vírgula) ou ";" (ponto e vírgula) nas senhas para que, caso elas fossem vazadas, esses caracteres estragassem os arquivos vazados. Isso supostamente atrapalharia o CSV — arquivo de texto utilizado para transferência de informações entre aplicativos diferentes, como o Microsoft Excel.

Mas, apesar das mais de 14 mil curtidas e 917 retweets, a informação não é 100% precisa.

Segundo Emilio Simoni, executivo-chefe da empresa de segurança digital PSafe, inserir esses caracteres pode fazer sentido em algumas situações, pois às vezes esses símbolos conseguem quebrar um arquivo ao ser baixado. "Contudo, dependendo do editor de texto e de código fonte utilizado para ler o arquivo, é possível abri-lo sem problemas", destaca.

Caracteres especiais = maior segurança

Isso não quer dizer, contudo, que adicionar caracteres especiais enquanto cria uma senha não seja importante. Isso porque uma senha forte precisa ter, preferencialmente, combinações alfanuméricas, letras maiúsculas e minúsculas, além de símbolos. "Isso aumenta a quantidade de possíveis combinações e torna mais difícil sua identificação", diz Emilio.

A empresa de segurança digital Kaspersky também recomenda a criação de senhas com uso de letras, números e símbolos. "O ideal é que elas tenham pelo menos 15 caracteres. Use um serviço para verificar se a sequência é forte [disponível pela empresa e em outras plataformas]", diz em nota.

A companhia também afirma que as senhas devem ter um "prazo de validade". Assim, o correto é anotar a data da criação de uma nova senha e trocá-la a cada 90 dias.

"Muitas empresas estabelecem essa prática, pois isso reduz os riscos de um incidente de segurança. Se, durante a pandemia, você está digitando o mesmo código para ar a Netflix, Spotify, Internet Banking e suas redes sociais, é hora alterá-la", ressalta.

Sobre isso, Emilio Simoni reforça que é fundamental modificá-las com frequência, uma vez que, em decorrência dos incidentes de segurança, os cibercriminosos podem estar de posse de milhares de senhas.

Outras dicas:

  • Evite usar uma mesma combinação em diferentes serviços e programas.
  • Não utilize senhas óbvias, como data de aniversário ou sequências alfanuméricas, ou senhas utilizadas com frequência, como '', 'senha'

Não salve senhas no computador

Sim, sabemos que pode ser bem complicado ficar decorando inúmeras senhas, principalmente com essa recomendação de trocá-las a cada 90 dias. Mas nem por isso você deve salvá-las no navegador, bloco de notas ou no computador.

Segundo a Kaspersky, as funções de autocompletar e "salvar minhas credenciais" que ficam disponíveis nos computadores facilitam o o de cibercriminosos aos serviços e plataformas utilizadas pelos usuários em caso de hackeamento do sistema, por exemplo.

"Essas funções não têm mecanismos de proteção. Elas basicamente 'escrevem' todas as senhas em um arquivo de texto — uma prática que muitos fazem de maneira manual. O problema é que se há um o não-autorizado no dispositivo (como em uma infecção por malware), os criminosos verificam se há senhas salvas para poder realizar fraudes", diz a empresa.

Dica da Kaspersky para memorizar várias senhas:

Use uma "cadeia estática" de combinações, ou seja, pegue uma grade de palavras importante para você e crie uma senha única com as primeiras letras de cada uma delas, adicionando caracteres. Por exemplo, digamos que você é fã da canção de ninar "batatinha quando nasce, espalha a rama pelo chão". Então você poderia criar a senha especial "Bqn&r9c".

Se você achou essa dica complicada, também existe a possibilidade de utilizar um gerenciador de senhas, como o Kee XC, Nord ou Myki Manager. Com esse tipo de recurso, você conseguirá armazenar todas as suas senhas em um local seguro que pedirá apenas uma senha-mestre para conseguir ar.