Jump to content

Restrições no Log in


y0ruichi
 Share

Recommended Posts

Boas.

A minha duvida é como que se faz as restiçoes no log in, ou seja, se o utilizador é o administrador terá acesso a pagina de admin, se é um utilizador com restições terá outra pagina com apenas alguns acessos.

O codigo que tenho neste momento:

<?PHP 

$username=$_POST['username'];
$password=$_POST['password'];


if (!isset($username) || !isset($password)) { 
$erro = "<center><u>Por favor, preencha os campos <b>Username</b>" .
	" e <b>Password</b></u><br>";
require("log.php");
exit;	
} 

elseif (empty($username) || empty($password)) { 
$erro = "<center><u>Por favor, preencha os campos <b>Username</b>" .
	" e <b>Password</b></u><br>";
require("log.php");
exit;
} 
else
{ 


$user = addslashes($_POST['username']); 	// add slashes to the username  
$pass = ($_POST['password']);  			



$dbHost = "xxxx"; 
$dbUser = "xxxx"; 
$dbPass = "xxxx"; 
$dbDatabase = "xxxx"; 



$db = mysql_connect($dbHost, $dbUser, $dbPass) or die ("Erro ao conectar à base de dados."); 

mysql_select_db($dbDatabase, $db) or die ("Couldn't select the database."); 

$result=mysql_query("select * from utilizadores where username='$user' AND password='$pass'", $db); 



$rowCheck = mysql_num_rows($result); 
if($rowCheck > 0){

while($row = mysql_fetch_array($result)){ 


$userid=mysql_result($result,0,"username");	
session_start(); 

$_SESSION['username'] = $username;
$_SESSION['userid']= $userid;


header( "Location: www.sapo.pt" ); 

  } 

  } 
  else { 

$erro = "<center><u>Dados incorrectos, por favor tente novamente</u><br>";
require("log.php");
exit;
  } 
  
  
  } 
  ?> 

Ainda estou em fases de testes por isso alguns links ainda não estão direccionados para o destino correcto

Aguardo resposta.

Link to comment
Share on other sites

Vejo três problemas com esse código:

As variáveis vindas do "exterior" (GET, POST, SESSION, etc) não podem ser passadas directamente para a query! Senão, podes ser atacado utilizando SQL Injection: http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=54022

As passwords não devem ser guardadas em texto normal, e sim passadas por uma hash (md5, sha).

Se guarda o ID autenticado numa $_SESSION, esta vai ser guardada numa cookie; visto que é só saber o username e userid, um atacante só precisa de mudar a cookie para o username e userid de um administrador e está logado!

Eu diria que seria preferível utilizar um módulo de autenticação bem testado como o PEAR::Auth ou o LiveUser. Há uma lista de módulos aqui.

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Link to comment
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
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.