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
md5ousha1. 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:
- Cadastre um novo usuário com uma senha.
- Verifique se o hash está sendo salvo no banco.
- Tente fazer login com a senha correta — deve funcionar.
- 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!