PHP - Validação de senha simples e segura!
Friday, December 22nd, 2006Hoje vou mostrar como montar uma área de login e senha e como validar isso no php de forma segura.
Primeiramente vamos começar com o formulário:
Esse primeiro código é somente com HTML e estilos CSS.
<html>
<head>
<title>Área Restrita - Efetue seu login!</title>
<style>
body {
font:12px Verdana;
}
#caixaLogin {
text-align:center;
border:1px solid blue;
border-top:20px solid blue;
}
h1 {
font: 15px Verdana;
font-weight:bold;
}
#obs {
font:10px Verdana;
text-align:left;
margin:20px;
}
span {
border: 1px solid green;
background: #00FF00;
}
</style>
</head>
<body>
<form action=”" method=”post” name=”form”>
<div id=”caixaLogin”>
<h1>Realize seu Login para acessar nossa 疵ea restrita:</h1>
Login:<br />
<input type=”text” name=”login” /><br />
Senha:<br />
<input type=”text” name=”senha” /><br /><br />
<input type=”checkbox” value=”1″ name=”comSeguranca” /> Efetuar login com seguran軋?<br /><br />
<input type=”submit” name=”logar” value=”Logar” /><br /><br />
</div>
<div id=”obs”>
<strong>Obs.:</strong>
<br /><br />
O que ・efetuar login com seguran軋 nessa p疊ina?
<br /><br />
ノ remover todo cigo com intuito de “burlar” o sistema.
</div>
</form>
</body>
</html>
Obs.: Esse código estou reutilizando do POST de SQL Injection que fiz pouco tempo atrás!
Antes de mexer no PHP, vamos executar este SQL abaixo, para poder testar o form depois:
Para quem ainda é iniciante, abra o seu PHPMyAdmin crie um banco de dados chamado de test, acesse o banco e execute o SQL.
IMPORTANTE: Verifique se o Login e Senha de seu MySQL são “root” e “” respectivamente.
CREATE TABLE `usuario` (
`usuarioCodigo` int(11) NOT NULL,
`usuarioLogin` varchar(15) NOT NULL,
`usuarioSenha` varchar(32) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
–
– Extraindo dados da tabela `usuario`
–
INSERT INTO `usuario` (`usuarioCodigo`, `usuarioLogin`, `usuarioSenha`) VALUES (0, ‘andrey’, ‘baf22ddb7b1a317d860f48638254e2e9′),
(0, ‘teste’, ‘698dc19d489c4e4db73e28a713eab07b’);
Como o form está pronto, agora vamos a parte que interessa, a validação PHP.
<?php
/* Conectando ao banco */
mysql_connect(”localhost”,”root”,”");
mysql_select_db(”test”);
/* Fim conectando ao banco */
/*
Desenvolvedor: Andrey Pedro Lefkum
E-mail: andrey@andrey.eti.br
Site: www.andrey.eti.br
Função do Arquivo: Demonstrar como fazer um sistema de login seguro!
*/
function removerCodigoMalicioso($comSeguranca) {
$comSeguranca = addslashes($comSeguranca);
$comSeguranca = htmlspecialchars($comSeguranca);
$comSeguranca = str_replace(”SELECT”,”",$comSeguranca);
$comSeguranca = str_replace(”FROM”,”",$comSeguranca);
$comSeguranca = str_replace(”WHERE”,”",$comSeguranca);
$comSeguranca = str_replace(”INSERT”,”",$comSeguranca);
$comSeguranca = str_replace(”UPDATE”,”",$comSeguranca);
$comSeguranca = str_replace(”DELETE”,”",$comSeguranca);
$comSeguranca = str_replace(”DROP”,”",$comSeguranca);
$comSeguranca = str_replace(”DATABASE”,”",$comSeguranca);
return $comSeguranca;
}
if($_POST['logar']) {
$login = $_POST['login'];
$senha = $_POST['senha'];
$login = removerCodigoMalicioso($login);
$senha = removerCodigoMalicioso($senha);
$sql = ”
SELECT usuarioLogin
FROM usuario
WHERE usuarioLogin = ‘”.$login.”‘
AND usuarioSenha = ‘”.md5($senha).”‘
“;
$resultado = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($resultado) == 1) {
?>
<span>Logou no sistema!</span>
<?php
}
else {
?>
Erro ao tentar acessar o sistema, verifique seu LOGIN e SENHA!
<?php
}
}
?>
O Código está ai, mas o que ele faz realmente?
Esse código acima, remove todos os tipos de SQL Injection que poderia estar afetando o funcionamento normal do seu sistema de login. Todos os $_POST que são enviados pelo formulário passam pela função que faz a remoção de qualquer código malicioso.
Uma dica interessante seria obrigar o usuário a colocar pelo menos 6 caracteres, não deixar no login e senha repetir no campo “aaaaaa” ou sequencial como “123456″ ou “abcdef” e ainda sugerir ao usuário utilizar letras e números ao mesmo tempo.
—-
Quero agradecer ao Google Analytics que está indicando o que os visitantes do meu site querem ler e o que eles mais procuram na net. Resolvi escrever esse POST porque vi que muitos que busca algo pelo Google relacionado ao PHP são iniciantes, e nada melhor do que um sistema de LOGIN seguro, que é o que muita gente falha hoje em dia. Conheço empresas que estão fortes no mercado de software, que não tem essa preocupação, então diria que não seria somente para iniciantes, mas também para pessoas despreocupadas com as informações do PRÓXIMO!
![]()
Valeu, espero que gostem do post!
