|
||
|
|
|
Avaliação: Não avaliado | Publicado em: 24/02/2008
Criptografia de senhas
Fred Jader Desenvolvedor web desde os 12 anos, Frederico Jader hoje em dia atua como diretor de arte e administrador de portais em geral, tendo como mais novo projeto o site www.gamesnahora.com
Nesse artigo estarei apresentando, de uma forma simples, a criptografar uma senha em PHP. A criptografia de senhas é bastante usada tendo em vista a segurança, já que somente a pessoa que a cadastrou terá acesso.
Para isso, vamos fazer uso da função password(). Lembrete: Está função, só criptografa a senha e não tem um método de descriptografia. Exemplo prático 1 - Vamos criar uma pequena tabela (tb_teste) CÓDIGO CREATE TABLE tb_teste ( id_senha int(3) NOT NULL auto_increment, senha varchar(20) NOT NULL DEFAULT '' , cript varchar(30) NOT NULL DEFAULT '' , PRIMARY KEY (id_senha) ); 2 - Criar o arquivo que vai fazer a conexão com a nossa base de dados MySQL (conecta.php) CÓDIGO <? /* Conecta com um banco de dados MySQL conforme parâmetros enviados (servidor = localhost) Banco de Dados: $dbname Porta: $usuario Senha: $senha*/ $dbname="nomedobd"; $usuario=""; $password=""; //1º passo - Conecta ao servidor MySQL if(!($id = mysql_connect("localhost",$usuario,$password))) { echo "<p style="text-align: center;"><big><strong>Não foi possível estabelecer uma conexão com o gerenciador MySQL. Favor Contactar o Administrador. </strong></big></p>"; exit; } //2º passo - Seleciona o Banco de Dados if(!($con=mysql_select_db($dbname,$id))) { echo " <p style="text-align: center;"><big><strong>Não foi possível estabelecer uma conexão com o gerenciador MySQL. Favor Contactar o Administrador. </strong></big></p>"; exit; } ?> 3 - Arquivo que vai criptografar a senha (cript.php) CÓDIGO <? include "conecta.php"; //chama o arquivo que conecta ao MySQL $senha = '123456'; $sql = mysql_query("INSERT INTO tb_teste(senha,cript) VALUES('$senha',password('$senha'))") or die("ERRO no comando SQL : ".mysql_error()); echo "Senha criptografada"; ?> Como vocês podem ver acima, eu deixei uma senha padrão = 123456. Depois de ter executado o comando acima, veja como vai ficar gravado em nossa base de dados. Id_senha Senha Cript 1 123456 565491d704013245 O campo id_senha é auto_incremento; O campo senha é o dado sem estar criptografado. O campo cript é a senha criptografada. Esse é um exemplo simples do uso da função password() para a criptografia de senhas em PHP. Aconselho vocês a modificarem o código para que se possa fazer a adaptação necessária a seu uso. Atenção: Quando for fazer uma pesquisa, você precisa criptografar esse campo também, caso contrário, sua pesquisa não irá retornar nada. Exemplo prático: (pesq.php) CÓDIGO <? include "conecta.php"; //Conecta com a nosso banco de dados MySQL $senha = '123456'; $sql = mysql_query("SELECT senha,cript FROM tb_teste WHERE cript = password($senha)") or die("ERRO no comando SQL : ".mysql_error()); if(mysql_num_rows($sql) > 0) echo "Achei a senha"; else echo "Não achei"; ?> Dica: Faça um teste, execute o arquivo cript.php para criptografar a senha(123456). Depois de ter feito, execute o arquivo pesq.php, que é o responsável pela pesquisa de senha. Se tudo ocorrer bem, ele deve te informar que ele encontrou a senha. Para concluir, faça o seguinte: mude a linha do SQL do arquivo pesq.php para: CÓDIGO $sql = mysql_query("SELECT senha,cript FROM tb_teste WHERE cript = $senha") or die("ERRO no comando SQL : ".mysql_error()); O que fizemos foi tirar a função password() do SELECT. Como resultado teremos a frase: Não achei. Conclusão: Quando se tem uma senha criptografada, é necessário criptografar ela também para fazer pesquisa. ![]() |
|
|
|