Senhas seguras em PHP: password_hash, Argon2id e bcrypt

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

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 →
Fale conosco