⊗ppPmAuRHS 424 of 447 menu

Adição de salt no registro

Então, você já sabe que o hash usando md5 é um processo irreversível e um hacker, que obtém acesso ao hash, não poderá obter a senha a partir desse hash.

Na verdade, essa afirmação não é totalmente verdadeira - atualmente, hackers mal-intencionados compilaram bibliotecas de hashes de senhas populares e não tão populares, e qualquer pessoa pode descobrir a senha simplesmente pesquisando o hash no Google.

Isso se refere a senhas suficientemente simples e populares.

Pesquise no Google, por exemplo, o hash 827ccb0eea8a706c4c34a16891f84e7b e você verá imediatamente nos resultados da pesquisa que é a senha '12345'.

Hashes de senhas suficientemente complexas não podem ser descobertos dessa forma (tente).

Você pode perguntar, qual é o problema então - vamos todos nos cadastrar com senhas complexas. No entanto, há um problema - a maioria dos usuários não pensa na segurança de seus dados e pode digitar senhas bastante simples.

Podemos, no momento do registro, forçar a criação de senhas mais longas, limitando, por exemplo, o número mínimo de caracteres para 6 ou 8, no entanto, ainda assim aparecerão senhas como '123456' ou '12345678'.

Claro, é possível criar um algoritmo mais inteligente para verificar a complexidade da senha, mas há outra solução.

A essência dessa solução é a seguinte: as senhas precisam ser salizadas (temperadas com salt). O salt (sale) é uma string aleatória especial, que será adicionada à senha durante o registro, e o hash será calculado não a partir da senha simples, mas a partir da string salt+senha, ou seja, a partir da senha salizada (com salt).

Ou seja, durante o registro você fará algo assim:

<?php $salt = '1sJg3hfdf'; // salt - uma string aleatória complexa $password = md5($salt . $_POST['password']); // transformamos a senha em um hash com salt ?>

Neste caso, o salt será diferente para cada usuário, ele precisa ser gerado aleatoriamente no momento do registro.

Aqui está uma função pronta que fará isso:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // comprimento do salt for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // caractere da tabela ASCII } return $salt; } ?>

Usando esta função, podemos reescrever nosso código assim:

<?php $salt = generateSalt(); // salt $password = md5($salt . $_POST['password']); // senha com salt ?>

Repito mais uma vez que essas foram alterações feitas durante o registro - no banco de dados salvamos não apenas o hash da senha, mas o hash da senha com salt.

Isso ainda não é tudo: na tabela de usuários, além dos campos login e password, é necessário criar também um campo salt, no qual armazenaremos o salt de cada usuário.

Implemente o registro descrito acima com senha com salt.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar