scanx 0 Denunciar post Postado Julho 17, 2006 Fabyo, posta o esquema pra cadastro de usuario com criptografia MD5.Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Julho 17, 2006 beleza, assim que der eu posto Compartilhar este post Link para o post Compartilhar em outros sites
sleepstar 0 Denunciar post Postado Julho 19, 2006 Olá, pessoal !?Só para me iterar no assunto que ainda nao peguei para estudar (SESSAO e COOKIE), mas será o próximo assunto que vou dar enfase.O que é esses ataques sql injection e como eles ocorrem (são os cracker´s) ?<quote>Exemplo simples de um sistema login usando session e protegido contra ataques sql injection<?session_start();//função anti sql injectionfunction anti_injection($txt){//Verifico se esta ativado magic_quotes caso esteja desativado uso a função addslashes$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;//referencia://http://www.php.net/get_magic_quotes_gpc//http://www.php.net/addslashes// retiro da variavel esses caracteres (--, #, *, ;) return preg_replace("@(--|\#|\*|;|=)@s", "", $txt); }</quote> Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Julho 19, 2006 ataques sql injection, sao comandos sql maliciosos que sao inseridos em formularios no lugar dos dados Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo.RFS 0 Denunciar post Postado Agosto 29, 2006 Onde podemos acha uma domentação didática sobre MD5? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Agosto 29, 2006 explicando um pouco sobre MD5 Existem 3 tipos básicos de algoritimos de criptografia, os simétricos, os assimétricos e os de hash. Os simétricos e os assimétricos utilizam uma chave de criptografia e podem ser descriptografados. O hash não podem ser descriptografados, mesmo porque o código que ele gera não tem nada a ver com o dado original. Um "hash" é um código gerado matematicamente a partir de um dado original. Ele não é um dado codificado, mas um valor gerado a partir de uma origem, e qualquer modificação mínima do dado original implica em um hash totalmente diferente. Quer dizer, mesmo que você tenha um arquivo de 1 milhao de bytes, a mudança de 1 byte no meio já implica em um hash totalmente diferente. É dito que a probabilidade de dois arquivos diferentes terem o mesmo hash MD5 é de 1 em 340282366920938463463374607431768211456 (1 em 2^128). Vejam tambem que um hash MD5 tem um tamanho fixo de 32 bits sempre, portanto não importa o tamanho da entrada de dados, ele sempre terá o mesmo tamanho. E por isso é imposível reverter um hash para o valor original, ainda mais que o codigo gerado nao guarda o dado original nele O único modo de quebrar a criptografia de um hash é por força bruta... tentando todas as possibilidades possíveis até gerar o mesmo hash.. o que pode levar literalmente anos Compartilhar este post Link para o post Compartilhar em outros sites
pdr33n 0 Denunciar post Postado Agosto 31, 2006 o meu sistema nao sai da tela de login mesmo com a senha certa... ja coloquei o campo da senha com 32 e estou gravando com md5 e lendo como md5.. o q mais pode ser? login_pics.php <form id="form1" name="form1" method="post" action="pics.php"> <p> </p> <p>login: <input name="nome" type="text" id="login" /> <br /> <br /> senha: <input name="senha" type="password" id="login" maxlength="10" /> </p> <p> <input type="submit" name="Submit" value="logar" /></p></form> </p> inserindo a senha com md5 $insere = mysql_query("INSERT INTO `cadastros` (`nome`, `senha`, `email`) VALUES ('$nome',md5('$senha'), '$email')") or die ("nao achei a tabela 'cadastros'"); o pics.php tem o include com o protecao.php. o protecao.php ta quase igual, a diferenca eh q eu botei o ob_start(); e o nome da tabela. Compartilhar este post Link para o post Compartilhar em outros sites
Newerton 0 Denunciar post Postado Setembro 14, 2006 Ae galera não vamos deixar morrer topicos interessantes!Ate agora não vi a solução desse sistema, ele funciona perfeito, so que quando chega na pagina2, ele volta pro login! ai so por deus, tenho que fechar e abrir denovo o navegador!Se eu colocar o include protecao no topo das minhas pagina, ela ficara voltando pro login? Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Barraviera 0 Denunciar post Postado Setembro 15, 2006 Ola estou com um problema eu entro na pagina login.html dai digito o nome e senha entao vai para pagina index.php e aparece essa mensagem:O que será???Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Arquivos de programas\VertrigoServ\www\teste\index.php:9) in C:\Arquivos de programas\VertrigoServ\www\teste\protecao.php on line 10Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Arquivos de programas\VertrigoServ\www\teste\index.php:9) in C:\Arquivos de programas\VertrigoServ\www\teste\protecao.php on line 10Warning: Cannot modify header information - headers already sent by (output started at C:\Arquivos de programas\VertrigoServ\www\teste\index.php:9) in C:\Arquivos de programas\VertrigoServ\www\teste\protecao.php on line 45Thiago F.B Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Barraviera 0 Denunciar post Postado Setembro 15, 2006 bom esse problema do session_start() ja resolvi usando o ob_star(); mais agora o problema é o seguinte, se eu digito a senha certa dai vai pra pagina index.php beleza tudo certo até ai, mais dai quando clico no link para voltar pra pagina principal, aparece este erro: Warning: Cannot modify header information - headers already sent by (output started at C:\Arquivos de programas\VertrigoServ\www\teste\principal.php:10) in C:\Arquivos de programas\VertrigoServ\www\teste\protecao.php on line 45 é o problema no headers e esse erro acontece tambem se eu digitar a senha errada. vou postar o codigo beleza agrado pela ajuda <? ob_start(); //função anti sql injection function anti_injection($txt) { //Verifico se esta ativado magic_quotes caso esteja desativado uso a função addslashes $txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt; //referencia: //http://www.php.net/get_magic_quotes_gpc //http://www.php.net/addslashes // retiro da variavel esses caracteres (--, #, *, ;) return preg_replace("@(--|\#|\*|;|=)@s", "", $txt); } function verifica_usuario($nome, $senha) { //conecto ao servidor de banco de dados passo o nome do servidor usuario e senha mysql_connect("localhost", "root", "vertrigo"); // seleciono o banco de dados mysql_select_db("teste"); /*faço uma pesquisa perguntando a quantidade de usuarios com o nome e a senha passada pelo usuario usando o count ele conta a quantidade de ocorrencias no select essa maneira é a forma mais rapida e correta desse tipo de pesquisa, muitas pessoas usam o select * from e pega com mysql_num_rows() dessa forma prejudica muito mais o acesso ao banco podendo travar se tiver muitos acessos simutaneos*/ $re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = md5('$senha')"); //referencia: http://www.php.net/md5 e http://www.php.net/mysql_result $total = mysql_result($re, 0, "total"); mysql_close(); /* se o total for diferente de 1 é porque o usuario nao esta cadastrado usando dessa forma o resultado esperado sempre sera 1 porque você precisa tbm criar um sistema de cadastros que deixe apenas um usuario ser cadastrado evitando usuarios repetidos */ if($total != 1) { // redireciono para pagina de login header("Location: login.html"); exit; } // se nao existir ja a sessao eu gravo ela if(!isset($_SESSION["dados"])) { $dados["nome"] = $nome; $dados["senha"] = $senha; //gravo a sessao por padrao o php hj ja passa o serialize automaticamente nao precisa mais passar ela $_SESSION["dados"] = serialize($dados); } } //verifico se existe a sessao e ja pego os dados que nela contem if(isset($_SESSION["dados"])) { $dados = unserialize($_SESSION["dados"]); $nome = $dados["nome"]; $senha = $dados["senha"]; verifica_usuario($nome, $senha); } else { //aqui eu verifico se o usuario esta vindo de um formulario e pego os valores $nome = isset($_POST["nome"]) ? anti_injection($_POST["nome"]) : ""; $senha = isset($_POST["senha"]) ? anti_injection($_POST["senha"]) : ""; verifica_usuario($nome, $senha); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Barraviera 0 Denunciar post Postado Setembro 16, 2006 Alguem pode me ajudar com o problema no------ headers---------vlwsssssssssss Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo.RFS 0 Denunciar post Postado Setembro 27, 2006 Funciono perfeito!Apenas um porem heheheh que não poderia faltaQuando está na navegando beleza, mas quando o usuário utiliza o Voltar do Browser ele da erro, voltando para a pessoa le loga novamente.Como corrigir? Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo.RFS 0 Denunciar post Postado Outubro 3, 2006 ta dificil deste laboratiorio se desenvolve :P Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Outubro 3, 2006 Em breve postaremos um sistema de login mais seguro e funcional Compartilhar este post Link para o post Compartilhar em outros sites
reNyeR 0 Denunciar post Postado Outubro 3, 2006 Estou tentando colocar uma parte de cadastro, os dados são enviados pro MySQL, tudo certinho, mas quando vou pra logar com esse cadastro, não funciona. Será que é porque a senha não vai incriptada ou nao tem nada a ver?Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo.RFS 0 Denunciar post Postado Outubro 3, 2006 Estou tentando colocar uma parte de cadastro, os dados são enviados pro MySQL, tudo certinho, mas quando vou pra logar com esse cadastro, não funciona. Será que é porque a senha não vai incriptada ou nao tem nada a ver?Abraçosé sim cara, você precisa cadastra a senha com MD5alguem pra tras coloco como faze! Compartilhar este post Link para o post Compartilhar em outros sites
alega 0 Denunciar post Postado Outubro 5, 2006 Também estou com o problema de qualquer login e senha funciona? Alguém pode ajudar, pois já vi que tem duas pessoas tb esperando a mesma resposta!!! Compartilhar este post Link para o post Compartilhar em outros sites
Tatimalheiros 0 Denunciar post Postado Outubro 9, 2006 Como faria para acrescentar um popup dizendo que o login esta errado?E tem como eu colocar um link de logoff após a pessoa entrar no sistema?Se puder me ajudar.. agradeceria muito..Bjs...Deus abençoe E achei um outro problema...Se eu logar e depois voltar a pagina de login se fechar o navegador, ele não aceita mais o login...Eu tenho que fechar o navegador, entrar de novo...O que pode ser feito para resolver isso??obrigada Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo.RFS 0 Denunciar post Postado Outubro 18, 2006 fabyo tamo no aguardo da versão 2...se tive complicado, pelo menos alguem pode ajuda a resolve os probleminhas citados antes...abrçs Compartilhar este post Link para o post Compartilhar em outros sites
MorFer 0 Denunciar post Postado Outubro 25, 2006 E tem como eu colocar um link de logoff após a pessoa entrar no sistema?O script para fazer logout eh simples. Vou posta-lo abaixo.Vou postar um sistema que eu desenvolvi. Esta funcionando perfeito. Um pouco diferente do sistema do Fabyo, mas com a mesma finalidade. conection.php (dados para conectar ao banco de dados) ---------------- <?php $host = "localhost"; // IP do banco de dados $usr = "root"; // Login do bd $pwd = ""; // Senha do bd $db = "accounts"; // Nome da base de dados ?> conecta.php (funcoes de conexao com banco de dados)-------------- <?php include("conection.php"); $conexao = mysql_connect("$host","$usr","$pwd"); $selectdb = mysql_select_db("$db",$conexao); function conectabd() { global $conexao, $selectdb; if(!$conexao) { die('O sistema está com problemas. Tente mais tarde. ' . mysql_error()); return false; } else { if(!$selectdb) { die('Ocorreu um erro com o banco de dados. Por favor informe ao administrador. ' . mysql_error()); return false; } else { return true; } } } function fecha_conexaobd() { global $conexao; mysql_close($conexao); } function checa_senha($nome,$pass) { global $conexao; if (conectabd()) { $resultado = mysql_query("SELECT login, senha FROM contas WHERE login = '$nome'", $conexao); if (!$resultado) { die('Erro no banco de dados. Reporte ao administrador. ' . mysql_error()); } else { $linha = mysql_fetch_array($resultado); if (($linha['login'] == $nome) && ($linha['senha'] == $pass)) { return true; } else { return false; } } fecha_conexao_bd(); } else { return false; } } ?> verifica.php (garante que o usuario esta logado. Toda pagina q incluir o verifica.php sera restrita a usuarios logados no sistema)------------- <?php // Inicia sessoes session_start(); // verifica se existe sessao. if(!isset($_SESSION["usuario"])) { // redireciona para pag. de login header("Location: login.php"); exit; //garante q nao sera executado nenhum codigo dessa pagina apos o login. } ?> index.php (pagina principal)----------- <?php session_start(); include("verifica.php"); //verifica se esta logado ou nao. caso nao esteja vai pra pag. de login. ?> <html><head> <title> Sistema de Login </title></head><body> <div align="left"><center> Bem Vindo <b> <?php echo "<font color=green>".$_SESSION['usuario']."</font>"; ?></b> <a href="sair.php">(Sair)</a></center> </body></html> login.php (pagina de login) ---------- <?php if ($submit) { if ($_POST['user'] && $_POST['senha']) { session_start(); //carrega sessoes e destroi session_destroy(); // para garantir que nao fique resto de outras sessoes. session_start(); //carrega sessoes limpas. include('conecta.php'); $login = $_POST['user']; $senha = $_POST['senha']; if (checa_senha($login,$senha)) { $_SESSION['usuario'] = $login; header("Location: index.php"); } else { $saida = "<tr><td><div align=center><font color=red> Senha ou Login inválidos! </font></div></td></tr> "; } } else { $saida = "<tr><td><div align=center><font color=red> Preencha todos os dados. </font></div></td></tr> "; } } ?> <html><head> <title> Sistema de Login </title></head><body> <div align="left"> <form method="post" action="<?php echo $PHP_SELF ?>"> <table width="220"><tr><td> <div align="center"> <font color="#000000"> <p align=left>Login: <input name="user" value="<?php echo $_POST['user'];?>" type="text" size="10"><br> Senha: <input name="senha" type="password" size="10"> <input type="submit" name="submit" value="Enviar"></p> </div></form></font></td></tr> <?php echo $saida; ?> </body></html> sair.php (script para deslogar)--------- <?php // Inicia sessões, para assim poder destruí-las session_start(); session_destroy(); header("Location: login.php"); ?> Ja no sistema do Fabyo, eh simples resolver esses erros.O erro de nao passar para a "pagina2.php": //verifico se existe a sessao e ja pego os dados que nela contem if(isset($_SESSION["dados"])) { $dados = unserialize($_SESSION["dados"]); $nome = $dados["nome"]; $senha = $dados["senha"]; verifica_usuario($nome, $senha); // basta retirar essa linha para funcionar. Se ja existe sessao, o usuario ja esta logado, nao precisa verificar de novo. } Ja o problema de nao logar mais de uma vez, basta usar o script de logout que postei ai em cima. Ele nao loga mais de uma vez pq ja tem uma sessao q nao foi destruida. Ai galera, espero ter ajudado. Ate +! Compartilhar este post Link para o post Compartilhar em outros sites