sábado, 5 de outubro de 2013

Autenticações que você não deve fazer!


Fazendo autenticação por referência:

Analisando o código por referência:

Nesse script, o erro está em comparar a url, porque o usuário pode manipular parte da url, e conseguir entrar na parte do administrador, esse script foi escrito como exemplo, mas penso que ninguém comete um erro tão primário assim, porém há muitos sites que você consegue entrar em pastas que o usuário não deveria entrar, alterando url.

<?php
$login = $_POST['login'];
$senha = $_POST['senha'];

if($_SERVER['HTTP_RFERER'] == "http://www.teste.com.br/administrador"){
echo "Sejá bem - vindo, senhor administrador :D"
}else{
  $sql ="select * from tb_user where login ='$login' and senha ='$senha'";
  $limite = mysql_query($sql);
}

if(mysql_num_rows($limite)== 1){

echo "Você está logado";
}else{
echo "VocÊ ainda não está logado";
}

?>

Autenticação por cookie:

O problema dos cookies é que eles podem ser modificados pelo usuário.

<?php
  $autenticado = $_COOKIE['autenticado'];

  if($autenticado ==true){
echo 'você está logado como administrador';
  }else{

echo "Você não está logado!";
  }

?>

Erro nessa Autenticação: OS DADOS PODEM SER MANIPULADOS POR USUÁRIO.

Formas seguras de se fazer está autenticação:
Nessa forma na tabela user, possui um campo permissão ao consultar o login e senha pega a permissão do usuário e compara se for admn, ele entra na parte a que pertence o administrador. Usa-se addslashes, para proteção contra possíveis tentativas de manipulação.


<?php
 session_start();

 $login = addslashes($_POST[login]); 
 $senha = addslashes($_POST['senha']); 

 $sql ="Select * from tb_user where login='$login' and senha='$senha'";
 $array = mysql_fetch_array($sql);
 $limite = mysql_query($sql);

 if($array['permissao']=="adm"){

echo "você está logado como administrador";
 }else{

echo 'Você está logado';
 }


?>






Nenhum comentário:

Postar um comentário