Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

psan7os

Proteger código PHP

Mensagens Recomendadas

psan7os

Boas pessoal preciso da vossa ajuda, estou a desenvolver um site, onde para aceder a certas áreas temos que ter registo, e temos que aceder através do login, a minha preocupação é que se o utilizador digitar a diretoria da parte do site que supostamente tem que ser protegida ele consegue entrar preciso mesmo da vossa ajuda, já me fartei de procurar mas encontro coisas diferentes em todo o lado e nada do que eu quero.

Deixo-vos o meu sistema de login/registo para verem o que se pode fazer.

<?php
 $ligacao = mysql_connect("localhost","root") or die ("Problemas na ligação ao MySql");
 mysql_select_db("bdteste1",$ligacao);

session_start();
session_name("login");
 $nome1=10;
 $password1=11;
 $nome100="$_POST[username]";
 $password100="$_POST[password]";
 $seleccionar = "SELECT username, password FROM registo";
 $nome = mysql_query ($seleccionar,$ligacao) or die ("Problemas a seleccionar");

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


while ($registo = mysql_fetch_row($nome)){
 IF ($nome100==$registo[0]){
	 $nome1=$nome1+2;
	 IF ($password100==$registo[1]){
	 $password1=$password1+1;
	 }
 }
 }
 IF ($nome1==$password1){
		 header("location: /site/php/home.php");
 }
 else
 echo ("<SCRIPT LANGUAGE='Javascript'>
window.alert('Os dados introduzidos estão incorrectos, tente novamente.')
window.location.href='../site/home.php';
</SCRIPT>");
 mysql_close($ligacao);

?>

<?php
session_start();
$username = $_POST ["username"];
$password = $_POST["password"];
$nome = $_POST ["nome"];
$email = $_POST ["email"];
$morada = $_POST ["morada"];
$tlm = $_POST ["tlm"];
$newsletter = $_POST ["newsletter"];
$_SESSION['nome']="$_POST[nome]";
$conexao = mysql_connect("localhost","root");
if (!$conexao)
die ("Erro de conexão com localhost, o seguinte erro ocorreu -> ".mysql_error());
$banco = mysql_select_db("bdteste1",$conexao);
if (!$banco)
die ("Erro de conexão com banco de dados, o seguinte erro ocorreu -> ".mysql_error());

$query = "INSERT INTO `registo` ( `username` , `password` , `nome` , `email` , `morada` , `tlm` , `newsletter`)
VALUES ('$username', '$password', '$nome', '$email', '$morada', '$tlm', '$newsletter')";
mysql_query($query,$conexao);
header("location: /site/home.php");
?>

Agradeço toda a ajuda ;)

Editado por yoda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

guardas em sessão um valor identificativo de quem se encontra autenticado, que ao sair é removido

dessa forma consegues verificar em qualquer altura se existe alguém autenticado e quem.

se não existir ninguém autenticado ou se não tiver permissão, fazes o que tens a fazer para prevenir o acesso aos dados


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
psan7os

Guardo por exemplo o username e passo para a outra página?

Depois faço um if de verificação? Se sim, o que é que verifico?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
panickz

Podes meter no $_POST["username"] e na password desta forma para prevenires SQL Injection vai funcionar igual é apenas mais uma segurança.

$nome100=mysql_real_escape_string($_POST["username"]);

Podes tambem contar com mysql_num_rows as linhas que existem

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
psan7os

Obrigado pessoal, já consegui por o if a funcionar.

Quanto à segurança, ao usar isto mysql_real_escape_string preciso de proteger a password também?

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.