• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NoOne

Php Login

57 mensagens neste tópico

Eu preciso de um sistema de login seguro, ja procurei em alguns sitios ms n percebo mto bem dakilo se alguem puder ajudar :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Eu posso-te ajudar, mas preciso de saber como pretendes guardar os Usernames e as Pass's dos utilizadores, se numa BD MySQL, se em XML, etc...

Tenho alguns sistemas de Login em PHP, talvez um se encaixe no que pretendes. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Apache disponibiliza um sistema de login seguro.

Um dos senãos é que o ficheiro de users mantido manualmente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu desenvolvi à tempos um que não só pedia o user e a pass, pedia também um código binário de 10 dígitos para autenticação do utilizador. Em PHP/MySQL

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
eu desenvolvi à tempos um que não só pedia o user e a pass, pedia também um código binário de 10 dígitos para autenticação do utilizador. Em PHP/MySQL

Tens isso ai pra desponibilizar á malta? Eu por acaso ando á procura de uma cena em php simples. Só para introduzir um login/password e depois abrir uma pagina com link's.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

amanha ja meto aki um script ... de login .... simples... sem nada de mais

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu à uns tempos (quando começei a aprender PHP, a primeira coisa que alguem faz para testar ligação com bases de dados (PHP sem bases de dados nao é PHP..) é um sistema de logins..) fiz algo que, apesar de não ser fiável, estava a funcionar.

http://darkwarrior.no.sapo.pt/Login.rar

Não foi o que pediram no topic por certo, uma vez que isto não é uma forma segura, mas talvez alguem ache util.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes usar algo deste genero :

<?php
/*
==========================================
================ Variaveis =================
==========================================
*/
$redirURL = "pagina.php";
define('DB_NAME', 'nome_da_BD');
define('DB_HOST', 'servidor_da_BD');
define('DB_USER', 'user_da_BD');
define('DB_PASS', 'pass_da_BD');
/*
==========================================
*/
session_start();

$form_username = $_POST['username'];
$form_password = $_POST['password'];
$_SESSION['strBackToPage'] = "false";
$strErrorMsg = " ";

if ($_REQUEST['action'] == "Login"){

if (empty($form_username) || empty($form_password)){
	$strErrorMsg = "Dados incompletos.";
}
else if (ValidateLogin($form_username,$form_password)){
	$_SESSION['username'] = "$form_username";
	$_SESSION['useractive'] = "yes";
	$_SESSION['strBackToPage'] = "true";
	header("Location: $redirURL");
}
else{
	$strErrorMsg = "Dados incorrectos.";
}
}

if ($_SESSION['strBackToPage'] == "false") {

?>
<html>
<head>
<title>You need to Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
table {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #000000;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCC99" align="center">
  <tr> 
	<td bgcolor="#CC9900"><br />
	  <strong><?php echo $strErrorMsg; ?></strong></td>
  </tr>
  <tr> 
	<td> <form method="post" action="<?php echo $strURL; ?>">
		<table width="100%" border="0">
			<tr>
			<td><strong>Username</strong>:</td>
			  <td><input name="username" size="20"></td>
			</tr>
			<tr>
			<td><strong>Password</strong>:</td>
			  <td><input type="password" name="password" size="20" /></td>
			</tr>
		</table>
		  <input type="submit" name="action" value="Login" />
		  </form>
		  </td>
  </tr>
</table>
</body>
</html>
<?php
}

/* ============================================================== */
/* ======= FUNCTION: VALIDATE USER & PASS BOOL VALUE ============ */
/* ============================================================== */
function ValidateLogin($validUser,$validPass) {
openConn();
global $dbServerConn;

$login_value = false;

$strSQL = "SELECT * FROM tabela 
			WHERE login = '$validUser' AND password = '$validPass' ";
$strSQL_result = mysql_query($strSQL,$dbServerConn) or die(mysql_error()); 
$rows = mysql_num_rows($strSQL_result);
//echo $strSQL_result;
if ($rows == 1) { 
	$login_value = true;
}
return $login_value;
}
/* ======= FUNCTION: VALIDATE USER & PASS BOOL VALUE ============ */
/* =========================== END ============================== */
function openConn(){
global $dbServerConn;
$dbServerConn = mysql_connect(DB_HOST,DB_USER,DB_PASS) or mysql_error($dbServerConn);   
$dbSel = mysql_select_db(DB_NAME, $dbServerConn) or mysql_error($dbSel); 
}

?>

Alteras as variaveis da ligação à BD no inicio, alteras o URL de redireccionamento e os dados relativos à tabela MySQL na função "ValidateLogin".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah... esqueci-me, depois usas no cabeçalho de todas as páginas isto :

session_start();
if ( @$_SESSION['useractive'] != "yes" ) {
header("Location: index.php" );
exit();
}

para ver se o utilizador está activo, senão redirecciona para a página de Login...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esse ja e mto complicado :P a maneiras mais facil de fazer nao tem tanta segurança mas e mais simples ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que o Mau da Fita colocou não é só o acto de login, mas também uma garantia que quem acede às páginas em que o codigo que valida se o user está activo está efectivamente logado.

Isto é particularmente util em 2 tipos de situação:

a) alguem acede directamente a um link e/ou envia dados por post directamente para uma página onde não devia

b) há corrupção dos dados contidos na session

Algo que por vezes também se faz para evitar algum tipo de "roubo de sessão" é guardar o ip e o session id na primeira página e validar se o ip e session id são iguais em todas as páginas.

Mas em questões de login, quanto mais estranho melhor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Eu à uns tempos (quando começei a aprender PHP, a primeira coisa que alguem faz para testar ligação com bases de dados (PHP sem bases de dados nao é PHP..) é um sistema de logins..) fiz algo que, apesar de não ser fiável, estava a funcionar.

http://darkwarrior.no.sapo.pt/Login.rar

Não foi o que pediram no topic por certo, uma vez que isto não é uma forma segura, mas talvez alguem ache util.

Boas, já testei isso mas dá-me um erro:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'DB_USERNAME'@'localhost' (using password: YES) in c:\wamp\www\login\login.php on line 12

Unable to select database

Que me falta, qual o problema?

(eu não precebo mesmo NADA disto, á que ter em conta este promenor! :oops: )

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é suposto funcionar como uma base de dados MySQL tambem instalada.

Tens que alterar no codigo de login o DB_USERNAME para o username da base de dados, e o DB_PASSWORD para aceder à passsword, depois tens que criar as tabelas com a mesma estrutura..

Eu agora não estou em casa, mas quando chegar dou-te a estrutura da tabela (se bem me lembro era simples, so um campo de username e um de password mesmo)

Uma pergunta:

existe alguma forma de se ver quais as variaveis actuais do $_SESSION, e de alterá-las de alguma forma client-side?

Porque se sim, todos os sistemas de login ja postados são facilmente hackados, basta ver as variaveis de $_SESSION e defini-las para o que queremos (o login do user com o qual queremos entrar)

A única forma de proteger contra isso, pelo menos que me lembre, seria guardar o login e a password em $_SESSION, e fazer-se a verificação com a base de dados no topo de cada página, o que tornaria o site ultra lento..

É possível ou não ver-se as variáveis de sessão?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Session é server side.

Tanta preocupação para nada.

Ainda bem então.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agradecimentos ao Warrior! :P sistema de login a funcionar a 100% :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
esse ja e mto complicado ;) a maneiras mais facil de fazer nao tem tanta segurança mas e mais simples ...

se queres comprometer a segurança das tuas aplicações é contigo.

Eu para além de estes sistemas uso bem mais como auth keys em imagens.

Não me passa pela cabeça fazer store de passwords e afins em ficheiros para download do people ou coisa do tipo.

Chama-me paranoico se quiseres, mas no dia em que tiveres um site defaced por causa de usares autenticações "mais simples" depois percebes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

houve la ... se kerer segunraçao faço um sistema de registo com md5, e pronto tenho a cena resolvida...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esta script aqui ajudou-me na iniciação das autenticações. Espirimenta vais ver que é fácil de perceber! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
houve la ... se kerer segunraçao faço um sistema de registo com md5, e pronto tenho a cena resolvida...

Teoricamente.. sim

Acontece que já foi criado um algoritmo para criar colisões entre hashes de MD5

On 1 March 2005, Arjen Lenstra, Xiaoyun Wang, and Benne de Weger demonstrated the construction of two X.509 certificates with different public keys and the same MD5 hash, a demonstrably practical collision. The construction included private keys for both public keys. And a few days later, Vlastimil Klima described an improved algorithm, able to construct MD5 collisions in a few hours on a single notebook computer. Given this, MD5 is definitely not practically collision-free.

Para quem não sabe o que é MD5, podem dar uma vista de olhos aqui:

http://en.wikipedia.org/wiki/MD5

De forma resumida (por mim)

MD5 é um algoritmo que transforma qualquer ficheiro (texto ou não, pois funciona "byte a byte") numa string de 32 caracteres.

Pequenas modificações geram strings totalmente diferentes, como por exemplo:

MD5("The quick brown fox jumps over the lazy dog") = 9e107d9d372bb6826bd81d3542a419d6

MD5("The quick brown fox jumps over the lazy cog") = 1055d3e698d289f2af8663725127bd4b

Mudar 1 byte altera totalmente o hash.

Até à pouco tempo, achava-se que era impossivel, tendo uma string e uma hash MD5, criar outra hash MD5 igual, mas já descobriram um método de o fazer.

Isto não tira toda a utilidade prática ao MD5, que ainda é muito usado para verificar a integridade dos ficheiros quando descarregados atraves da internet.

Criam a hash MD5 antes da transferência, o download é efectuado, e o cliente cria a hash MD5 daquele ficheiro.

Basta compara-las para saber se existiu algum erro na transferência.

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

Tudo isto para explicar que o MD5 não é 100% seguro.

Espero que tenham percebido o que é e como funciona o MD5 (pelo menos aqueles que ainda nao o sabiam)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
houve la ... se kerer segunraçao faço um sistema de registo com md5, e pronto tenho a cena resolvida...

hombre não te chateies que não há necessidade disso.

/me surrenders to your 1337 skillz.

peace

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora