Como usar password hashing seguro no PHP (bcrypt/argon2) Print

  • 0

Como Usar Password Hashing Seguro no PHP (bcrypt/argon2) – Guia do Sensei da GeHost

Olá, amigo(a) desenvolvedor(a) ou entusiasta da segurança! 🌟

Se você está construindo um site, sistema ou aplicativo com login, saber como proteger as senhas dos usuários é essencial. E o melhor jeito de fazer isso? Usando hashing seguro com algoritmos modernos como bcrypt ou argon2.

Na GeHost, acreditamos que segurança não é só para experts — é para todos. Então, vamos aprender juntos, passo a passo, como proteger senhas com o máximo de cuidado. Seja bem-vindo(a) ao nosso guia de segurança com coração!

Por que não usar senhas em texto claro?

Imagine guardar a senha de um amigo no caderno comum. Qualquer um que pegar o caderno vai saber tudo. É assim que funciona com senhas em texto claro: perigoso e inaceitável.

Quando uma senha é armazenada em texto claro, e o banco de dados for vazado, todos os usuários estão em risco. Mas com hashing seguro, a senha é transformada em um código único e irreversível — como uma impressão digital digital.

Dica do Sensei: Nunca, em hipótese alguma, armazene senhas em texto claro. Isso é como deixar a chave da sua casa embaixo do tapete. 🚫

Por que escolher bcrypt ou argon2?

Esses dois algoritmos são os mais recomendados hoje em dia por causa de:

  • Resistência a ataques de força bruta (tentar todas as combinações).
  • Hashes únicas mesmo com senhas iguais (graças ao "salt").
  • Tempo de execução ajustável (quanto mais tempo, mais seguro).

Na prática, bcrypt é mais usado e amplamente suportado. Já argon2 é o campeão de segurança atual — ganhou o Password Hashing Competition em 2015.

Se você quer o melhor, use argon2. Se quer algo sólido e testado, bcrypt é ótimo também.

Passo a passo: Como implementar no seu PHP

Vamos usar um exemplo simples, mas seguro. Vamos supor que você tem um formulário de cadastro com campos de email e senha.

Passo 1: Criar o hash ao cadastrar o usuário

Quando o usuário se cadastra, você não salva a senha — você gera um hash seguro.

Exemplo com bcrypt:

php
<?php
// Senha do usuário (nunca em texto claro!)
$password = "minhasenha123";

// Gera o hash com bcrypt (usando o padrão)
$hashed_password = password_hash($password, PASSWORD_BCRYPT);

// Agora você salva $hashed_password no banco de dados
// Exemplo: INSERT INTO usuarios (email, senha_hash) VALUES ('joao@exemplo.com', '$2y$10$...');

echo "Hash gerado: " . $hashed_password;
?>

Pronto! A senha está segura. Mesmo que alguém acesse o banco, não conseguirá ler a senha original.

Passo 2: Verificar a senha ao fazer login

Quando o usuário tenta logar, você compara a senha digitada com o hash armazenado.

Exemplo com bcrypt:

php
<?php
// Senha digitada pelo usuário
$user_input_password = "minhasenha123";

// Hash salvo no banco (ex: $2y$10$abc123...)
$saved_hash = "$2y$10$abc123...";

// Verifica se a senha está correta
if (password_verify($user_input_password, $saved_hash)) {
    echo "Login bem-sucedido!";
} else {
    echo "Senha incorreta.";
}
?>

Se a senha estiver correta, o sistema permite o acesso. Se não, bloqueia.

Passo 3: Use argon2 (recomendado para maior segurança)

Se você quiser o melhor, use argon2 — ele é mais resistente a ataques com hardware especializado.

Exemplo com argon2:

php
<?php
$password = "minhasenha123";

// Gera hash com argon2
$hashed_password = password_hash($password, PASSWORD_ARGON2ID);

// Salve no banco
echo "Hash argon2 gerado: " . $hashed_password;
?>

Para verificar:

php
<?php
$user_input_password = "minhasenha123";
$saved_hash = "$argon2id$v=19$m=65536,t=4,p=1$...";

if (password_verify($user_input_password, $saved_hash)) {
    echo "Login bem-sucedido!";
} else {
    echo "Senha incorreta.";
}
?>

Como saber se seu servidor suporta argon2?

Na GeHost, todos os servidores já vêm com suporte a bcrypt e argon2 ativado por padrão. Você não precisa fazer nada extra — é só usar o código acima.

Se quiser confirmar, você pode usar o comando:

php -r "var_dump(password_algorithms());"

Se aparecer argon2id ou bcrypt, seu servidor está pronto!

Práticas recomendadas (do Sensei)

  • Nunca armazene senhas em texto claro — nem mesmo em arquivos de configuração.
  • Use password_hash() e password_verify() — são funções oficiais do PHP, testadas e seguras.
  • Evite algoritmos antigos como md5 ou sha1. São inseguros e já foram quebrados.
  • Use argon2id se possível — é o mais seguro hoje em dia.
  • Proteja o acesso ao seu banco de dados com senhas fortes e limitações de acesso.

Dica do Sensei: Use senhas longas e complexas — 12 caracteres ou mais, com letras maiúsculas, minúsculas, números e símbolos. E nunca reutilize senhas!

Como testar seu sistema?

Depois de implementar, faça testes:

  1. Cadastre um novo usuário com uma senha.
  2. Verifique se o hash está sendo salvo no banco.
  3. Tente fazer login com a senha correta — deve funcionar.
  4. Tente com uma senha errada — deve falhar.

Se tudo funcionar, parabéns! Você está protegendo seus usuários com a melhor prática de segurança.

Conclusão: Segurança começa com você

Proteger senhas não é só técnica — é ética. Cada usuário que confia em você com sua senha merece o máximo de cuidado.

Com bcrypt ou argon2, você está fazendo a diferença. E na GeHost, estamos aqui para te ajudar a construir sites seguros, bonitos e confiáveis.

Se tiver dúvidas, entre em contato com nosso suporte — estamos sempre prontos para ajudar. 💬

Até a próxima, com segurança no coração!

Tela do Gerenciador de Arquivos do cPanel com a estrutura de pastas (public_html, etc.)

Was this answer helpful?

« Back