Agosto 9, 2019

Senha armazenada em texto claro!?

Senha armazenada em texto claro!?

Na Quarta-feira passada, dia 07/08, fiz uma compra on-line de dois produtos em uma loja que não revelarei o nome por questões de ética.

Conheci e gostei dos produtos em uma feira que fui recentemente, mas só depois que decidi comprá-los online. Para realizar a compra, tive que fazer o meu cadastro. Até ai sem problemas. Enfatizo que por mais que eu já seja um veterano em realizar compras pela internet, sempre fico em alerta, não importa quão grande seja o site, como Amazon, Americanas e entre outros.

Dessa vez, após o cadastro, recebi o seguinte e-mail de retorno com todos os meus dados cadastrados:

Entre os meus dados cadastrados no site, recebi a minha senha em texto claro. Em pleno 2019, uma má prática dessa em um site de e-commerce, não deveria ocorrer de maneira alguma.

Sim, Vitor, mas qual o problema ?

Não sou da área técnica de segurança, mas receber essa senha em texto claro, assim, só mostra que muito provavelmente, ela está armazenada no banco de dados dessa forma, sem nenhum proteção. Ou seja, o site sendo comprometido facilmente, os camaradas teriam acesso as nossas credenciais.

Sabendo disso, educadamente enviei e-mail para eles:

OBS: Removi parte do e-mail pois no final os elogio e falo onde conheci a loja

No mesmo dia, recebi o seguinte e-mail de resposta:

Achei bacana ter recebido uma resposta rápida mesmo que padrão para esse tipo de situação e de saber que olhariam com atenção sobre o que os reportei.  Ainda assim, a perguntar crucial está no ar "Sim, mas e qual seria a forma segura de armazenar essa senha"? Tentarei explicar sem tecniquês:

  1. O usuário cria uma conta no site. Imagine que a senha criada seja - *kn9mtk5 .
  2. A senha criada "passa" por uma função hash, que é como se fosse um embaralhador e cria caracteres aleatórios e gera o hash da sua senha, ficando algo mais ou menos assim: 252E2406732308F9A7
    B378ED94E78467D14077D19C8282443FCD3D6190FCABFA.
  3. O hash da sua senha então, é armazenada no banco de dados.
  4. Sendo assim, toda vez que o usuário fornecer suas credenciais, o banco de dados verifica o hash da senha inserida com o que ele possui armazenado.
  5. O hash sendo igual, o usuário pode se logar.

Isso significa que a partir do hash não se pode obter a senha original. A não ser que a função hash usada seja fraca e/ou obsoleta...

Fonte: https://www.youtube.com/watch?v=z8tUW8Z96dI

Agora tecnicamente falando, essa função hash para armazenar as senhas pode ser ainda mais fortalecida e por isso recomendo, principalmente para você que está lendo e for desenvolvedor, ficar por dentro das boas práticas: Password Storage Cheat Sheet , OWASP TOP 10 e OWASP ASVS.

E para concluir, pode ter certeza que esse é apenas um exemplo de falha das diversas que existem por ai que ainda não foram corrigidas.

Vamos ficar vigilantes e cobrar de onde nós estamos colocando os nossos dados. Afinal estamos surfando a onda da privacidade e isso tem tudo haver.

Mais uma coisa, se você que está lendo é um desenvolvedor, por favor, se ainda não desenvolve seguro, comece hoje a fazer isso. Caso não seja, cobrem a conhecidos ou amigos que sejam. Assim faremos uma web mais segura.

:)