Senhas seguras em PHP: password_hash, Argon2id e bcrypt
Senhas devem ser guardadas como hash forte, nunca em texto puro nem com MD5/SHA1. O PHP traz password_hash(), que aplica algoritmos lentos e com sal automático (Argon2id ou bcrypt) — exatamente o que torna inviável quebrar senhas em massa se o banco vazar.
Gerando e verificando
// Ao cadastrar:
$hash = password_hash($senha, PASSWORD_ARGON2ID);
// Ao logar:
if (password_verify($senha, $hash)) {
// senha correta
}
Se o seu PHP não tiver Argon2id compilado, use PASSWORD_BCRYPT — também é seguro. Jamais use md5() ou sha1(): são rápidos demais e quebráveis.
Mantenha os hashes atualizados
Com o tempo, você pode aumentar o custo do algoritmo. Após um login bem-sucedido, verifique se o hash precisa ser refeito:
if (password_needs_rehash($hash, PASSWORD_ARGON2ID)) {
$novo = password_hash($senha, PASSWORD_ARGON2ID);
// regrave $novo no banco
}
Complete a proteção
Some a isso um formulário de login protegido contra CSRF e um limite de tentativas (rate limiting) para barrar ataques de força bruta.
Perguntas frequentes
Argon2id ou bcrypt: qual escolher?
Argon2id é o mais moderno e recomendado quando disponível. bcrypt continua seguro e é um ótimo padrão de fallback.
Preciso guardar o “sal” separadamente?
Não. O password_hash já embute um sal aleatório no próprio hash. O password_verify lê tudo de lá.
Continue lendo
- Sessões seguras em PHP: HttpOnly, Secure e SameSite
- Upload de arquivos sem brechas em PHP
- Core Web Vitals em 2026: LCP, INP e CLS explicados
Procurando uma suporte especializado WordPress?
O Site Seguro é especialista 100% em segurança WordPress, com SLA, garantia contra reincidência e atendimento humano no Brasil.
Conhecer nosso serviço →