Jump to content

Question

[Pergunta] Sistema de login com senha criptografada

 

Eu tenho um jogo e quando eu faço o cadastro coloco por exemplo: username: Thiago e Password: Thiago123, mas ai no banco de dados a senha aparece criptografada: 1.thumb.png.7d4532a3aa63d8f8b0e96631b78bde7e.png

 

E na hora de fazer login eu coloco no Username: Thiago e na Password: Thiago123, mas não entra, e quando eu coloco a senha criptografada igual da imagem acima, entra normalmente no jogo.

 

Oque eu queria saber é como tirar a criptografia do password do meu banco de dados ou se não tiver como, queria mudar o index.php , que esta assim:2.thumb.png.0ed071d0f048bf61c2d7f900283e13fb.png

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Isso acontece porque você usa algo para encriptar quando a pessoa se registra e na hora de logar (buscar) você não trata a string retornada na password transformando ela no mesmo código que foi gerado na hora do registro.

Se no registro você usa:

md5($_POST["password"]);

 

Quando você for buscar no banco de dados para verificar se a senha está correta, você trata a string da mesma forma.

Share this post


Link to post
Share on other sites
  • 0
Guest

Olá @rookier, é exatamente como o @jamesbond disse, se você salva a senha no seu banco como uma string criptografada seja com sha1, md5, ou outro tipo, você deve conferí-la na hora do login novamente criptografando ela, por exemplo:

 

//Recebo as variáveis do form
$login = $_POST['email_form'];
$senha = $_POST['senha_form'];

//Codifico a senha do formulario, para que ela seja igual a do banco(no lugar do sha1 use o padrão que voce utilizou na sua aplicação)
$senha_codificada = sha1($senha);

//Faço a pesquisa no banco pelo email e senha que sejam iguais ao email e senha criptografada
$busca_SQL = "SELECT email,senha FROM usuarios WHERE email = '$login ' && senha = '$senha_codificada'";
$retorno = executaSQL($busca_SQL, $link);

No seu caso você deve criptografar a sua variável password e aí você conseguira logar sem problemas, principalmente pois md5() ou sha1() assim como em outros casos é uma criptografia de mão única, e não tem como você descriptografa-la.

 

Se você precisar descriptografa-la pesquise sobre base64():

 

http://blog.thiagobelem.net/criptografia-no-php-usando-md5-sha1-e-base64

http://php.net/manual/pt_BR/function.base64-encode.php

http://php.net/manual/pt_BR/function.base64-decode.php

 

Outro detalhe importante é que você CASO, utilize md5, sha1 e outros semelhantes, aprenda criptografia blowfish, o bcrypt, que é mais seguro e moderno, uma vez que gera um salt dinâmico, e não fixo, diferente do md5 e outros, que por exemplo "Olá Mundo" sempre será "ca4e913424bfcfe71c016829a371a1f1" e com blowfish as senhas ficam mais protegidas e são geradas com valores diferentes.

 

https://secure.php.net/manual/pt_BR/function.crypt.php

http://blog.thiagobelem.net/criptografando-senhas-no-php-usando-bcrypt-blowfish

http://www.pedrofilho.com.br/blog/2009/11/13/sobre-o-blowfish/

Share this post


Link to post
Share on other sites
  • 0
Em 06/03/2017 at 08:42, Saul da Silva Rolim disse:

Olá @rookier, é exatamente como o @jamesbond disse, se você salva a senha no seu banco como uma string criptografada seja com sha1, md5, ou outro tipo, você deve conferí-la na hora do login novamente criptografando ela, por exemplo:

 


//Recebo as variáveis do form
$login = $_POST['email_form'];
$senha = $_POST['senha_form'];

//Codifico a senha do formulario, para que ela seja igual a do banco(no lugar do sha1 use o padrão que voce utilizou na sua aplicação)
$senha_codificada = sha1($senha);

//Faço a pesquisa no banco pelo email e senha que sejam iguais ao email e senha criptografada
$busca_SQL = "SELECT email,senha FROM usuarios WHERE email = '$login ' && senha = '$senha_codificada'";
$retorno = executaSQL($busca_SQL, $link);

No seu caso você deve criptografar a sua variável password e aí você conseguira logar sem problemas, principalmente pois md5() ou sha1() assim como em outros casos é uma criptografia de mão única, e não tem como você descriptografa-la.

 

Se você precisar descriptografa-la pesquise sobre base64():

 

http://blog.thiagobelem.net/criptografia-no-php-usando-md5-sha1-e-base64

http://php.net/manual/pt_BR/function.base64-encode.php

http://php.net/manual/pt_BR/function.base64-decode.php

 

Outro detalhe importante é que você CASO, utilize md5, sha1 e outros semelhantes, aprenda criptografia blowfish, o bcrypt, que é mais seguro e moderno, uma vez que gera um salt dinâmico, e não fixo, diferente do md5 e outros, que por exemplo "Olá Mundo" sempre será "ca4e913424bfcfe71c016829a371a1f1" e com blowfish as senhas ficam mais protegidas e são geradas com valores diferentes.

 

https://secure.php.net/manual/pt_BR/function.crypt.php

http://blog.thiagobelem.net/criptografando-senhas-no-php-usando-bcrypt-blowfish

http://www.pedrofilho.com.br/blog/2009/11/13/sobre-o-blowfish/

Como eu faço para ver qual criptografia estou usando ?

Share this post


Link to post
Share on other sites
  • 0
3 horas atrás, rookier disse:

Como eu faço para ver qual criptografia estou usando ?

 

Suponho que já pegou o código pronto... Na parte onde ele recebe os valores para registro ou direto na query.

Share this post


Link to post
Share on other sites
  • 0
7 minutos atrás, rookier disse:

Sou iniciante em php, peguei os arquivos php já prontos, não entendo mt bem de query ou string... 

Então é aconselhável que você faça um curso básico sobre o assunto amigão

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By perfectraider99
      Galera bom dia, recentemente me pediram pra fazer um sistema de postagem para um site de carros . 
      pesquisei formas de fazer e encontrei um projeto de upload de imagens 
      fiz tudo certinho no local host e funcionou perfeitamente mas quando fui colocar no servidor nada funcionou, nem enviava o formulario nem amostrava os produtos.
      por favor galerinha estou a muito tempo tentando resolver esse problema . 
      aqui tá o meu codigo 
       
      index : 
       
       
      <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> body{ font-family: arial; } section{ background-color: rgb(123,104,238,.4); width: 70%; margin: auto; } input, label, textarea{ display: block; width: 100%; height: 30px; } label{ line-height: 30px; margin-top: 10px; } textarea{ height: 150px; } form{ width: 60%; margin: auto; box-sizing: border-box; padding: 20px; } #botao{ margin-bottom: 10px; width: 50%; background-color: rgba(0,0,0,.8); color: white; height: 40px; cursor: pointer; border: none; font-size: 15pt; } h1{ text-align: center; } #foto{ margin-top: 20px; margin-bottom: 20px; } a{ background-color: rgb(0,255,127); display: block; width: 220px; height: 50px; color: black; text-decoration: none; float: right; text-align: center; line-height: 50px; margin: 20px; border: 1px solid rgba(0,0,0,.2); } </style> </head> <body> <section> <a href="produtos.php">Ver todos os produtos</a> <form method="POST" enctype="multipart/form-data"> <h1>ENVIO DE IMGS</h1> <label for="nome">Nome do Produto</label> <input type="text" name="nome" id="nome"> <label for="des">Descrição</label> <textarea name="desc" id="desc"></textarea><br> <input type="file" name="foto[]" multiple id="foto"> <input type="submit" id="botao"> </form> </section> </body> </html> produtos : <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style type="text/css"> section{ width: 70%; margin: auto; font-family: arial; } div{ width: 15%; float: left; padding: 1%; background-color: rgb(123,104,238,.4); margin: 10px; } img{ width: 100%; height: 150px; } h2{ font-size: 12pt; color: white; text-align: center; background-color: rgba(0,0,0,.5); padding: 10px 0px; font-weight: normal; } p{ font-size: 10pt; } </style> </head> <body> <section> <?php require 'classes/Produto_class.php'; $p = new Produto_class('formulario_produtos','infinityfree.net','root', '99583460'); <- aqui ta a parte do banco de dados $dadosProduto = $p->buscarProdutos(); if (empty($dadosProduto)) { echo 'Ainda não há produtos aqui'; }else { foreach ($dadosProduto as $value) { ?> <a href="exibir_produto.php"> <div> <img src="imagens/<?php echo $value['foto_capa'] ?>"> <h2><?php echo $value['nome_produto'] ?></h2> </div> </a> <?php } } ?> </section> </body> </html> e aqui tá a parte do banco de dados : <?php class Produto_class{ private $pdo; public function __construct($dbname, $host, $user, $senha) { try { $this->pdo = new PDO("mysql:dbname=".$dbname.";host=".$host,$user, $senha); } catch (PDOException $e) { echo 'erro com banco de dados :'.$e->getMessage(); } catch (Exception $e) { echo 'erro Generico :'.$e->getMessage(); } } public function enviarProduto($nome, $descricao, $fotos = array()) { //INSERIR PRODUTO ( TABELA DO PRODUTO ) $cmd = $this->pdo->prepare('INSERT INTO produtos(nome_produto, descricao) values (:n, :d)'); $cmd->bindValue(':n', $nome); $cmd->bindValue(':d', $descricao); $cmd->execute(); $id_produto = $this->pdo->LastInsertId(); //INSERIR AS IMAGENS DO PRODUTO (TABELA DE IMAGENS) if(count($fotos) > 0 )// Se veio imagens { for ($i=0; $i < count($fotos); $i++) { $nome_foto = $fotos[$i]; $cmd = $this->pdo->prepare('INSERT INTO imagens (nome_imagem, fk_id_produto) values (:n, :fk)'); $cmd->bindValue(':n', $nome_foto ); $cmd->bindValue(':fk', $id_produto); $cmd->execute(); } } } public function buscarProdutos()//TODOS { $cmd = $this->pdo->query('SELECT *, (SELECT nome_imagem from imagens where fk_id_produto = produtos.id_produto LIMIT 1) as foto_capa FROM produtos'); if($cmd->rowCount() > 0) { $dados = $cmd->fetchAll(PDO::FETCH_ASSOC); }else { $dados = array(); } return $dados; } public function buscarPrdutoPorId($id) { } public function buscarImagensPorId($id) { } }
       
      Já troquei a variavel $p = new Produto_class no arquivo que eu mandei pro servidor ..
    • By MateusOFCZ
      Olá, estou desenvolvendo um projeto de registro de clientes em java no netbeans e usando o MySQL Workbench e Xampp, gostaria de saber se é possível fazer com que o programa fique verificando se está conectado com o banco de dados, e caso não esteja ele mostra uma mensagem pedindo para o usuário se conectar em uma rede, caso ele se conecte o programa irá esconder essa mensagem e funcionará normalmente.

      Eu consegui fazer com que ele mostre se está conectado ou não, porém se eu desligar o servidor ele não atualiza mostrando que está offline, ele continua como online...
    • By wesleycsilva
      Tem uma tabela que relaciona os produtos de uma determinada compra, onde preciso consultar diversos produtos e retornar os ids das compras que tenham todos os produtos que consultei, em uma estrutura parecida com o exemplo abaixo:
       
      SELECT  * FROM  produtos_has_compras WHERE (idProduto = 6 AND idProduto = 77 AND idProduto = 11) GROUP BY idCompra;
       
      Alguém teria uma solução que possa me ajudar?
    • By bradry
      Olá galera !
       
      Tenho uma dúvida referente aos operadores de pesquisa. Tenho uma  tabela com a seguinte estrutura
       
      id integer, CPF varchar ( 20 ), SCORE_CUSTOM varchar ( 20 ),  SCORE varchar ( 20 ), SCORE_CCOG varchar ( 20 ), RESTRITIVO varchar ( 20 ) );
       
      Quando faço uma pesquisa da maneira a baixo colocando aspas simples no ZERO retorna erro, agora quando faço a mesma pesquisa sem aspas me retorna o resultado esperado.
       
      select * from score
      where RESTRITIVO ='0' 
      and SCORE_CUSTOM >=100
      and SCORE_CUSTOM <=200;
       
      Só queria entender se esse funcionamento de aspas vale para tudo que vou pesquisa ou se tem que ser usado em casos específicos. Não consegui encontrar nada sobre na web.
    • By giovannaalves
      Apareceu esse erro na página para retornar os dados do tabela do banco de dados:
      Fatal error: Call to a member function query() on a non-object in /home/storage/e/e6/47/grupoct/public_html/rondact/ronda2.php on line 4
       
      Meu código:
      <?php
          include("conexao.php");
          $consulta = "SELECT * FROM TAG_LIDA";
          $con = $mysqli->query($consulta) or die($mysqli->error);
          
      ?>
      <html>
          <head>
              <meta charset="utf-8">
          </head>
          <body>
              <table border="1">
                  <tr>
                      <td>Código posto</td>
                      <td>Data</td>
                      <td>Hora</td>
                      <td>Nome posto</td>
                      <td>Tag</td>
                  </tr>
                  <?php while($dado = $con->mysql_fetch_array()){ ?>
                  <tr>
                      <td><?php echo $dado["TAG_COD_POSTO"]; ?></td>
                      <td><?php echo date("d/m/Y", strtotime( $dado["TAG_DATA"])); ?></td>
                      <td><?php echo $dado["TAG_HORA"]; ?></td>
                      <td><?php echo $dado["TAG_NOME_POSTO"]; ?></td>
                      <td><?php echo $dado["TAG_TAG"]; ?></td>
                  </tr>
                  <?php } ?>
              
              </table>
          </body>
      </html>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.