DiegoJGL 0 Denunciar post Postado Setembro 23, 2006 Ae galera...to fuçando aki no dreamwaver e vi que existe um modo muito facil de proteger paginas em session. O problema é que eu naum sei se é taum seguro. Pra mim tah funcionando como uma luva. Bem, abra o dreamwaver, e com uma tabela jah criada a minha tabela é usuarios q nela contem id, login e senha sendo a senha gravada em md5. Aqui vai a tabela do mysql: CREATE TABLE `usuarios` ( `id_usuario` smallint(5) unsigned NOT NULL auto_increment, `nome` varchar(40) NOT NULL, `senha` varchar(32) NOT NULL, PRIMARY KEY (`id_usuario`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; INSERT INTO `usuarios` VALUES (1, 'teste', '900150983cd24fb0d6963f7d28e17f72'); Vamos aos processos: Crie o DB. Para isso, vá em Painel Application > Databases e clique no botão de mais (+) e logo em Mysql Connections. Configure como abaixo: Connection name: nome da conexão (connSisLogin); MySQL server: localhost; User name: nome do usuário do banco de dados (o padrão geralmente é root); Password: senha do banco de dados. usei vazia; Database: nome do banco de dados que você criou as tabelas que serão utilizadas. Agora parte de criação das paginas. Seram criadas 3 páginas. Sendo q uma é página de erro (ou seja, ela é opcional). Abra uma nova página salve-a como erro.php. E faça o que quiser para mostrar que o login não funcionou e que pode ter sido erro de senha ou usuario. Essa parte é por conta propria. Abra uma outra nova página salve-a como login.php Insira um form, nomeie-o login_form. Insira dois Text Fields, um nomeie de login e outro de senha. Insira um button, dê o valor que preferir, eu usei OK. Painel Application > Server Behaviors e clique no botão de mais (+) User Authentication > Log In User. Configure como a figura abaixo: Agora mude o dreamweaver para o modo de code para concertar o modo da senha que está como md5. Então ache o linha abaixo (provavelmente é a linha 22): $LoginRS__query=sprintf("SELECT nome, senha FROM usuarios WHERE nome='%s' AND senha='%s'",E mude para: $LoginRS__query=sprintf("SELECT nome, senha FROM usuarios WHERE nome='%s' AND senha=md5('%s')", Explicação: O que mudamos foi a senha de '%s' para md5('%s'). Bem, finalizamos a criação da pagina de login. E o codigo total ficou assim. Podendo sofrer alterações devido a localização da sua pagina perante a pagina de connection. <?php require_once('../Connections/connSisLogin.php'); ?><?php// *** Validate request to login to this site.if (!isset($_SESSION)) { session_start();}$loginFormAction = $_SERVER['PHP_SELF'];if (isset($_GET['accesscheck'])) { $_SESSION['PrevUrl'] = $_GET['accesscheck'];}if (isset($_POST['login'])) { $loginUsername=$_POST['login']; $password=$_POST['senha']; $MM_fldUserAuthorization = ""; $MM_redirectLoginSuccess = "index.php"; $MM_redirectLoginFailed = "erro.php"; $MM_redirecttoReferrer = false; mysql_select_db($database_connSisLogin, $connSisLogin); $LoginRS__query=sprintf("SELECT nome, senha FROM usuarios WHERE nome='%s' AND senha='%s'", get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password)); $LoginRS = mysql_query($LoginRS__query, $connSisLogin) or die(mysql_error()); $loginFoundUser = mysql_num_rows($LoginRS); if ($loginFoundUser) { $loginStrGroup = ""; //declare two session variables and assign them $_SESSION['MM_Username'] = $loginUsername; $_SESSION['MM_UserGroup'] = $loginStrGroup; if (isset($_SESSION['PrevUrl']) && false) { $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; } header("Location: " . $MM_redirectLoginSuccess ); } else { header("Location: ". $MM_redirectLoginFailed ); }}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title></head><body><form id="login_form" name="login_form" method="POST" action="<?php echo $loginFormAction; ?>"> <p>Login <input type="text" name="login" /> </p> <p>Senha <input type="text" name="senha" /></p> <p> <input type="submit" name="Submit" value="Ok" /> </p></form></body></html>Agora vamos para pagina de proteção. Que ira proteger a pagina de ser visualisada por qualquer um. Abra uma nova pagina e salve nomeando-a restrict.php. Painel Application > Server Behaviors e clique no botão de mais (+) User Authentication > Restrict Acess to page. Configure como a imagem abaixo: Bem, finalizamos a criação da pagina de proteção. E o codigo total ficou assim. <?phpif (!isset($_SESSION)) { session_start();}$MM_authorizedUsers = "";$MM_donotCheckaccess = "true";// *** Restrict Access To Page: Grant or deny access to this pagefunction isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { // For security, start by assuming the visitor is NOT authorized. $isValid = False; // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. // Therefore, we know that a user is NOT logged in if that Session variable is blank. if (!empty($UserName)) { // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. // Parse the strings into arrays. $arrUsers = Explode(",", $strUsers); $arrGroups = Explode(",", $strGroups); if (in_array($UserName, $arrUsers)) { $isValid = true; } // Or, you may restrict access to only certain users based on their username. if (in_array($UserGroup, $arrGroups)) { $isValid = true; } if (($strUsers == "") && true) { $isValid = true; } } return $isValid; }$MM_restrictGoTo = "login.php";if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) { $MM_qsChar = "?"; $MM_referrer = $_SERVER['PHP_SELF']; if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&"; if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0) $MM_referrer .= "?" . $QUERY_STRING; $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer); header("Location: ". $MM_restrictGoTo); exit;}?>Agora é só ir na pagina index.php e colocar em cima dela o codigo para incluir o restrict.php q verificará se existe a session e se não redirecionará para o login. <?phpinclude ("restrict.php"); ?> Pronto. Tudo feito. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Gostaria que todos comentassem para ajudar a melhorar o codigo, tmbm gostaria de saber se esse codigo é realmente seguro, ou não. E se alguem puder inserir o Anti SQL INJECTION pra proteger ainda mais, pode faze-lo. Axo q seria de grande ajuda para melhorar ainda mais a segurança. O problema é q eu naum entendo direito de Anti SQL INJECTION e os q vi aki no forum naum estaum funcionando corretamente sem contar li comentarios de q eles naum protegem totalmente. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Abraços e até mais. Vou melhorando o codigo de acordo com as necessidades. :D Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 23, 2006 Nada como fazer tudo "na unha"; saber o que está fazendo. Mas beleza. Para quem está começando é uma boa ajuda. Mas odeio os códigos gerados pelo DreamWeaver. Ele os complica à toa. :P Não é Anty SQL Injection; é Anti SQL Injection. Anti == contra. ;) Abraços Compartilhar este post Link para o post Compartilhar em outros sites
DiegoJGL 0 Denunciar post Postado Setembro 24, 2006 Nada como fazer tudo "na unha"; saber o que está fazendo. Mas beleza. Para quem está começando é uma boa ajuda. Mas odeio os códigos gerados pelo DreamWeaver. Ele os complica à toa. :P Não é Anty SQL Injection; é Anti SQL Injection. Anti == contra. ;) Abraços Tanto faz...tu intendeu ^^ Compartilhar este post Link para o post Compartilhar em outros sites
ossuda 0 Denunciar post Postado Janeiro 4, 2010 Tem como ter mais de 1 usuário??? Como faço para configurar os usuarios e as senhas??? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 4, 2010 Nada como fazer tudo "na unha"; saber o que está fazendo. Mas beleza. Para quem está começando é uma boa ajuda. Mas odeio os códigos gerados pelo DreamWeaver. Ele os complica à toa. :P Não é Anty SQL Injection; é Anti SQL Injection. Anti == contra. ;) Abraços Isso aí Beraldo, sou Anti DreamWeaver, com relação a geração de códigos. Como o Beraldo disse, acho que o segredo do PHP e o prazer em programar, está em fazer tudo na unha, saber o que está fazendo, saber qual será o comportamento de seu sistema, em fim, quando você faz algo na unha, você coloca de sua mente para fora, é satisfatório ver o sistema desenvolvido por você funcionando :P Tem como ter mais de 1 usuário??? Como faço para configurar os usuarios e as senhas??? Sistema de Login por níveis... não é difícil, basta criar um campo na tabela que armazena os dados do usuário, tipo: nivel ENUM('1','2') Onde 1 = Admin Onde 2 = MEmbro/Usuário. então no login você fazer também a busca neste campo para verficar o nível e então quando redirecionar, você terá uma página com as condições para cada um, que você irá definir. Compartilhar este post Link para o post Compartilhar em outros sites
DimmyKx 0 Denunciar post Postado Junho 6, 2010 Até criei, mais não é 100% seguro, pode ser totalmente ownavel http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif Compartilhar este post Link para o post Compartilhar em outros sites