Helpers para password

<< Click to Display Table of Contents >>

Navigation:  Segurança e Otimização >

Helpers para password

Previous pageReturn to chapter overviewNext page

 

$a = get_senha("abacate"); // transforma em hash para gravar no banco de dados
 
 
// esse teste valida a senha (se é hash ou tiver entre 8 e 40 letras returna true)
if (is_senha_ok($a)) {
    echo "<p>Senha OK</p>";
else {
    echo "<p>Senha ERRO</p>";
}
 
// em ambos IF vai ser senhaOK
if (is_senha_ok("abacate123")) {
    echo "<p>Senha OK</p>";
else {
    echo "<p>Senha ERRO</p>";
}
 
// aqui testa quando usuário loga, vamos comparar a senha do banco com a digitada
$senha_na_base_em_hash = (vem do banco)
 
if (is_senha_valida("123456"$senha_da_base_em_hash)) {
    echo "<p>Senha OK</p>";
else {
    echo "<p>Senha ERRO</p>";
}

 

Funcoes.php

 

/**
 * Retorna true quando password é valido
 * @param string $pass
 * @return bool
 */
function is_senha_ok(string $pass): bool {
    // se já tá cifrada, ignora validacao
    if (password_get_info($pass)['algo']) {
        return true;
    }
 
    // no minimo 8 letras maximo 30
    $tam = mb_strlen($pass);
    return ($tam >= 8 && $tam <= 30 ? true : false);
}
 
/**
 * Retorna um password já criptografado (hash)
 * @param string $pass
 * @return string
 */
function get_senha(string $pass): string {
    $opcoes = ['cost' => 10'algo' => 1];
    return password_hash($passPASSWORD_DEFAULT$opcoes);
}
 
/**
 * Testa se um password bate com uma hash
 * @param string $pass
 * @param string $hash
 * @return bool
 */
function is_senha_valida(string $passstring $hash): bool {
    return password_verify($pass$hash);
}