CodeIgniter e Hashing

Preâmbulo

O conceito de hashing em PHP é algo que está em chamas na Internet. Embora essas discussões normalmente incluam quais algoritmos usar e não usar. Alguns deles também incluem instruções. Em termos de CodeIgniter, ele possui um auxiliar de segurança. No entanto, como esse arquivo obtém hashes é horrível, especialmente para novos desenvolvedores. Ele simplesmente pega a entrada e a executa por meio da função hash () do PHP . Meu arquivo auxiliar é projetado para melhorar o auxiliar de segurança existente (tudo-seja-isso, ignorando-o).

Arquivo

O nome do arquivo é hash_helper.php. Isso deve seguir as convenções de nomenclatura do CodeIgniter. O arquivo completo pode ser visto aqui .

Primeiro

A diferença que define entre meu auxiliar e o auxiliar de segurança nativo é o uso da criação de sal alfanumérico pseudoaleatório em letras maiúsculas e minúsculas.

if(!function_exists('generate_salt')){
function generate_salt($length = 10){
$source
= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
$i
=0;
$salt
= '';
while($i<$length){ $salt.=substr($source,rand(1,strlen($source)),1);
$i
+=1;
}
return $salt;
}
}

Como o link do GitHub acima explica, para alterar o comprimento de um salt, basta alterar o valor de $length. No entanto, é importante que esse parâmetro permaneça e seja um número inteiro. felizmente, este não é o fim deste arquivo …

Segundo

Vamos continuar e criar um keygen para este arquivo, novamente, ele existe no arquivo GitHub. no entanto, no interesse de economizar espaço e simplesmente ter uma convenção de nomenclatura que faça sentido …

if(!function_exists('generate_key')){
function generate_key($length = 30){
return $this->generate_salt($length);
}
}

Esperando mais? Não há necessidade, esta função existe apenas para que o uso de generate_salt()e generate_key()não seja confundido.

Terceira e Final

Como diz esta dica, trata-se de criar hashes:

if(!function_exists('generate_hash')){
function generate_hash($salt,$password,$algo = 'sha256'){
return hash($algo,$salt.$password);
}
}

Então, para este arquivo … o $saltparâmetro é para o salt gerado com generate_salt()o $passwordpode ser qualquer string que precise ser hash. O $algoparâmetro precisa ser um algoritmo com suporte do servidor.

e isso é tudo. Você tem seu salt, chave e hash para serem armazenados no gerenciamento de usuários. Uma dica de acompanhamento será feita sobre como usar este arquivo em um ambiente CodeIgniter, PDO e MySQLi.

Novamente, para baixar este arquivo, visite o link do github acima.