Logo Hardware.com.br
jjones
jjones Novo Membro Registrado
16 Mensagens 1 Curtida

[Resolvido] como encriptar a senha passada pelo formulário de login?

#1 Por jjones 09/01/2017 - 14:13
Boa tarde pessoal tenho dúvida quanto a criptografia, tenho pesquisado uma forma de criptografar senhas, mas não consigo fazer isso acontecer, até mesmo vendo forma simples, nenhuma bate com a forma do código a baixo, peço a compreensão de todos quanto a minha ignorância no assunto, peço ajuda de todos que quiserem me ajudar, obrigado.
parte do fomulario de login.php


logo.png

Sistema de Gestão
Patrimonial do DEP











<?php if(isset($_SESSION['loginErro']))
{
echo $_SESSION['loginErro'];
unset ($_SESSION['loginErro']);
}
?>


arquivo valida.php
//Verifica se os campos possuem dados
if((isset($_POST['txt_matricula']) == ['txt_matricula'] ) && (isset($_POST['txt_senha']) == ['txt_senha'])){
$matricula = mysqli_real_escape_string($conn, $_POST['txt_matricula']); //Escapar de caracteres especiais, como aspas, prevenindo SQL injection
$senha = mysqli_real_escape_string($conn, $_POST['txt_senha']);
$senha = md5($senha);
//

//$string = $senha;
//$codificada = hash('sha512', $string);

$result_matricula = "SELECT * FROM usuarios WHERE matricula = '$matricula' && senha = '$senha'";
$resultado_matricula = mysqli_query($conn, $result_matricula);
$resultado = mysqli_fetch_assoc($resultado_matricula);

parte do codigo de cadastro de uma usuario no campo senha

Senha:
' id="senha" name="senha" placeholder="Senha" >


a variavel $fdata recebe a senha digitada e cadastra dessa forma
$table = 'usuarios';
$form = [
'status' => 'Cadastrar',
'submit' => 'Salvar',
];
# campos do formulário
$fdata = [

'nome' => isset($_POST['nome']) ? $_POST['nome'] : null,
'senha' => isset($_POST['senha']) ? $_POST['senha'] : null,

];
em valida.php era para fazer a encriptação acredito eu mas nao consigo, como devo fazer?
Flavio_vivinho
Flavio_vivin... Geek Registrado
2.5K Mensagens 173 Curtidas
#3 Por Flavio_vivin...
12/01/2017 - 18:09
Boa noite, seja bem-vindo ao fórum.

Na próxima vez que for apresentar códigos, coloque dentro das tags code, pois facilita a leitura. Tipo: [ code = php ], [ code = html], mas sem os espaços.

Bom, não estou conseguindo entender algumas partes do teu código. como a linha abaixo:
[code=php]
if((isset($_POST['txt_matricula']) == ['txt_matricula'] ) && (isset($_POST['txt_senha']) == ['txt_senha'])){
[/code]

Por que está comparando com "['txt_matricula']"?

Creio que ali deveria usar:
[code=php]
if((isset($_POST['txt_matricula'])) && (isset($_POST['txt_senha']))){
[/code]

Onde está fechando esta condição?
Observou que para usar $_SESSION['loginErro'], você precisa iniciar as sessões no cabeçalho com session_start()?
"Vinde a Mim, todos os que estais cansados e oprimidos, e Eu vos aliviarei" - Mateus 11,28.
www.flaviosistemas.com.br
Desenvolvendo projetos, facilitando sua vida.
jjones
jjones Novo Membro Registrado
16 Mensagens 1 Curtida
#4 Por jjones
13/01/2017 - 10:24
Bom dia, desculpa por não ter postado o código todo, sou novo, em php, tudo que tenho conseguido fazer é pela ajuda das pessoas dos fóruns e sou muito grato, pelo pouco tem que vcs tem mas ainda assim dedicam para ajudar.

[ code = php

if((isset($_POST['txt_matricula'])==['txt_matricula'])&&(isset($_POST['txt_senha'])==['txt_senha'])){



este arquivo é o faz validação

ao fazer login nao tenho certeza se é aqui que tenho que fazer a conversão para cadastrar, pois aqui ele verifica se o que esta no banco esta como md5 acho que somente isso, n ão fiz esse código sozinho, e tem muitas coisas que nao entendo ainda, percebi que no form de login tem o md5 ai nao sei se a comparação de entre a senha digitada no form é feita ali ou no arquivo de validação.


nesta linha é feita comparação do campo do formulario se o mesmo foi preenchido se nao estou enganado, e o restanto do código vou postar.
//Verifica se os campos possuem dados
if((isset($_POST['matricula']) == ['matricula'] ) && (isset($_POST['senha']) == ['senha'])){
$matricula = mysqli_real_escape_string($conn, $_POST['matricula']); //Escapar de caracteres especiais, como aspas, prevenindo SQL injection
$senha = mysqli_real_escape_string($conn, $_POST['senha']);
$senha = MD5($_POST['senha']);
//$senha = sha1($_POST['senha']);
//$senha = md5($senha);





$result_matricula = "SELECT * FROM usuarios WHERE matricula = '$matricula' && senha = '$senha'";
$resultado_matricula = mysqli_query($conn, $result_matricula);
$resultado = mysqli_fetch_assoc($resultado_matricula);

//Encontrando um usuário na tabela usuario com os mesmos dados digitado pelo usuario
if(isset($resultado)){
$_SESSION['matriculaId'] = $resultado['id'];
$_SESSION['matriculaNome'] = $resultado['nome'];
$_SESSION['matriculaNiveisAcessoId'] = $resultado['niveis_acesso_id'];
$_SESSION['numeroMatricula'] = $resultado['matricula'];
if($_SESSION['matriculaNiveisAcessoId'] == "1"){
header("Location: moderad.php");
}elseif($_SESSION['matriculaNiveisAcessoId'] == "2"){
header("Location: manutencao/manutencao.php");
}elseif($_SESSION['matriculaNiveisAcessoId'] == "3"){
header("Location: cliente/cliente.php");
}else{
$_SESSION['loginErro'] = "Erro - Entre em contato [email]suporte@suporte.com.br[/email]";
header("Location: login.php");
}
}else{
$_SESSION['loginErro'] = "Matricula ou senha inválido";
header("Location: login.php");
}
}else{
$_SESSION['loginErro'] = "Matricula ou senha inválido";
header("Location: login.php");
}

---------------------------------------------------------------------------------------------------------------------------------------

este é parte do codigo do formulario de cadastro


Senha:
' id="senha" name="senha" placeholder="Senha" >

Falha durante a ' . $action . '!
' . $sqli->error . '

';
} else {
$msg[] = '

' . $action . ' realizada com sucesso!

';
header("Location:adm.php");
}

}

// em caso de edição:
if (isset($PARAMS[0])) {
$id = intval($PARAMS[0]);
// busca os dados a serem editados
$result = $sqli->query("SELECT * FROM $table WHERE matricula=$id LIMIT 1");
// checa se houve erro:
if ($sqli->error) {
$msg[] = '

Falha ao localizar registro!
' . $sqli->error . '

';
} elseif ($result->num_rows) { // se algum registro foi encontrado:
$fdata = $result->fetch_assoc(); // carrega os dados
$form = [
'status' => 'Editar',
'submit' => 'Atualizar',
];
} else { // se nenhum registro for encontrado, define mensagem de erro:
$msg[] = '

Registro não encontrado na base de dados!

';
}
}


arquivo de login Login.php

onde vc me falou que deve haver um session_start();

ante do fomulario tem esse código em php no mesmo arquivo

// inicia a sessão
session_start();
// se já existir um usuário logado
if (isset($_SESSION['user'])) {
// volta pro index
header('Location: ./');
} elseif (isset($_POST['login'])) {
// conecta ao banco de dados
include 'app/models/connect.php';
// conecta ao banco de dados
include 'app/models/model.php';
// criar a query de busca
$query = "SELECT id, matricula, senha FROM usuarios
WHERE
matricula ='$_POST[login]'
AND senha = MD5('$_POST[senha]')"; // aqui no form de login tem o md5 ai nao sei se a comparação de entre a senha digitada no form é feita aquii ou no arquivo de validação.
// executar a query
if (is_array($result = returnArray($query))) {
$_SESSION['user'] = $result[0];
header('Location: ./');
} else {
$e = "

$result

";
}
}
?>

nao sei onde estou fazendo confusao.

]

Bom dia consegui resolver, nao sei se é do jeito certo

com a mudança do seguinte código

$nome = ($_POST['nome']); // acrescebtei as variaveis que pegavam os dados do campos do formulario
$niveis_acesso_id = ($_POST['niveis_acesso_id']);
$matricula = ($_POST['matricula']);
$senha = MD5($_POST['senha']);
// new record case

$query = "INSERT INTO usuarios set nome = '$nome', matricula = '$matricula', senha ='$senha' , niveis_acesso_id= '$niveis_acesso_id' ";
e mudei $query = "INSERT INTO . $middle_query senha = $senha"; para usuarios set nome = '$nome', matricula = '$matricula', senha ='$senha' , niveis_acesso_id= '$niveis_acesso_id'
desde já agradeço foi muita dor de cabeça mas agradeço, preciso fazer uma outra coisa, que não tinha conseguido, quero saber se posso postar poergunta aqui ou em criar outro topico, pois nem mesmo comecei a fazer pois achei que seria facil fazer a criptografia, mas perdi muito tempo.

minha chefe pediu para eu fazer o seguinte
fazer registro de historico de movimentação: PI | Local anterior e local atual | Status anterior e atual | usuario que fez as alterações (logado) | data da movimentação
concluir até dia 20/01

mas não tenho ideia, exemplo, tenho uma tabela "A" toda alteração que for feita nessa tabela possa ser registrado em uma outra tabela "B" porém iss é só para registro, no banco e nao para ficar no site. nao tenho ideia, de como fazer, que escript usar,
Flavio_vivinho
Flavio_vivin... Geek Registrado
2.5K Mensagens 173 Curtidas
#5 Por Flavio_vivin...
14/01/2017 - 19:58
O código abaixo não está validando nada na minha opinião. Substitua pelo código que indiquei acima para fins de teste.
[code=php]
if((isset($_POST['txt_matricula'])==['txt_matricula'])&&(isset($_POST['txt_senha'])==['txt_senha'])){
[/code]
"Vinde a Mim, todos os que estais cansados e oprimidos, e Eu vos aliviarei" - Mateus 11,28.
www.flaviosistemas.com.br
Desenvolvendo projetos, facilitando sua vida.
Flavio_vivinho
Flavio_vivin... Geek Registrado
2.5K Mensagens 173 Curtidas
#7 Por Flavio_vivin...
17/01/2017 - 10:44
jjones disse:
Bom dia fiz essa mudança que vc sugeriu esta ok muito obrigado smile.png

aproveitando aqui, criptografia md5 é seguraou devo usar sha2, ou sha3, se devo usar a familia sha, como deveria mudar la?


Que bom que tenha dado certo.
Em relação ao MD5, se não me engano, tem 128bits. É um bom hash. Mas se quiser um pouco mais de segurança, creio que um sha1 seria suficiente. Sha1 tem 190bits. Eu uso o sha1 e pode ser usado da mesmo forma como o MD5. Já sha 256, etc...tem que usar (sha256, variável).

[code=php]
// exemplo sha1
$var = 123;
$var_hash = sha1($var);

//exemplo sha256, 512.
$var = 123;
$var_hash = hash("sha256",$var); // para 512 só trocar sha256 por sha512.
[/code]
"Vinde a Mim, todos os que estais cansados e oprimidos, e Eu vos aliviarei" - Mateus 11,28.
www.flaviosistemas.com.br
Desenvolvendo projetos, facilitando sua vida.
jjones
jjones Novo Membro Registrado
16 Mensagens 1 Curtida
#8 Por jjones
17/01/2017 - 12:03
mais uma vez obrigado, consegui aqui, tudo certo, fiz com sha512 smile.png

Eu posso fazer uma pergunta aqui relacionado a table e programação aqui nesse topico?, pois como vc me respondeu achque podera me ajudar a dúvida é a seguinte.

preciso fazer um registro de histórico de movimentação tipo: PI | Local anterior e local atual | Status anterior e atual | usuário que fez as alterações (logado) | data da movimentação


mas não tenho ideia de como deve ser o script, um exemplo, tenho uma tabela "A" toda alteração que for feita nessa tabela por meio de uma janela web, possa ser registrado em uma outra tabela "B" no banco porém isso é só para registro, no banco e não para ficar no site. não tenho ideia, de como fazer, nem que script usar.
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#9 Por Fergo
17/01/2017 - 14:03
jjones disse:
Bom dia fiz essa mudança que vc sugeriu esta ok muito obrigado smile.png

aproveitando aqui, criptografia md5 é seguraou devo usar sha2, ou sha3, se devo usar a familia sha, como deveria mudar la?


Não use MD5. Ela é uma função muito rápida, tornando-a bastante insegura no nível de processamento atual mesmo com salting. MD5 hoje em dia se reverte com bruteforce em questão de minutos e, se a senha for fraca, instantaneamente através de rainbow tables.
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
Flavio_vivinho
Flavio_vivin... Geek Registrado
2.5K Mensagens 173 Curtidas
#11 Por Flavio_vivin...
17/01/2017 - 20:30
Fergo disse:
Não use MD5. Ela é uma função muito rápida, tornando-a bastante insegura no nível de processamento atual mesmo com salting. MD5 hoje em dia se reverte com bruteforce em questão de minutos e, se a senha for fraca, instantaneamente através de rainbow tables.


Não sabia disto. Obrigado pela correção e orientação.

jjones disse:

mas não tenho ideia de como deve ser o script, um exemplo, tenho uma tabela "A" toda alteração que for feita nessa tabela por meio de uma janela web, possa ser registrado em uma outra tabela "B" no banco porém isso é só para registro, no banco e não para ficar no site. não tenho ideia, de como fazer, nem que script usar.


Seria somente você pegar os dados do usuário que está logado e criar outra instrução sql, nas linhas após o sql de alteração ou cadastro, para gravar na tabela B.
"Vinde a Mim, todos os que estais cansados e oprimidos, e Eu vos aliviarei" - Mateus 11,28.
www.flaviosistemas.com.br
Desenvolvendo projetos, facilitando sua vida.
Flavio_vivinho
Flavio_vivin... Geek Registrado
2.5K Mensagens 173 Curtidas
#13 Por Flavio_vivin...
20/01/2017 - 13:15
jjones disse:
como mudar para topico resolvido?


Vá ao primeiro post, no canto diagonal superior direito tem uma lista suspensa - ferramentas. Clique em editar titulo e, ao abrir, terá uma nova lista suspensa à esquerda do título. Somente selecionar resolvido e salvar.
"Vinde a Mim, todos os que estais cansados e oprimidos, e Eu vos aliviarei" - Mateus 11,28.
www.flaviosistemas.com.br
Desenvolvendo projetos, facilitando sua vida.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal