Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
À uns dias atrás eu criei um sistema de login(estava com pressa) sem o uso de MySQL, que era mais ou menos assim:
<?php
//Reescrevi o código pois apaguei esse sistema e coloquei com MySQL.
session_start('login');
if(isset($_POST['pass')){
//As senhas
$senhas = array('THMpVQ6Td99fMQ3fVRFQ', 'carrofoobar');
if (in_array($_POST['pass'], $senhas)) {
$_SESSION['logado'] = 'yes';
header('Location: destino.php');
exit();
}else{
header('Location: index.php?err=1');
exit();
}
}else{
header('Location: index.php?err=1');
exit();
}
?>
Antes dessa página tem uma pra verificar se o nome existe. Se existir, segue pra a digitação da senha, e se a senha digitada estiver errada, volta pro início.
Então, esse sistema pode ser considerado "seguro"?
Se ele não usa o banco, não há por que se preocupar com Sql injection (afinal, não há nada de sql nesse login embutido no código). O mesmo vale para a função mysql_real_escape_string.
Mas pela lógica que está usando, cada vez que adicionar um novo usuário, alterar senha, etc, você terá que atualizar o arquivo. Sem contar que, pela sua lógica, eu posso entrar no sistema com meu login e a senha de outra pessoa, já que o login e senha não estão relacionados (o código procura a senha digitada em um array de senhas).
De qualquer forma, ainda acho válido você registrar os dados de login e senha no banco de dados. Você pode, inclusive, armazenar a senha criptografada com MD5(), por exemplo. E, ai sim, ter cuidado com sql injection e xss, dentre outros.
Se o sistema não vai usar banco não e necessario md5 nen escape_string ;)
Nen sempre tem necessidade de usar banco ..
vai ver e um sistema interno e poucas pessoas vão usar ..
Ai por exemplo , 2 pessoas vão usar .. pra que criar uma tabela pra guardar 2 pessoas ?
Abraços
>
Mas, qual a lógica de não ter acesso ao MySQL?
Adicione uma proteção contra SQL Inject, vai tornar o seu sistema mais seguro, a falta disso e a falta de acesso ao banco é o que torna seu sistema inseguro no meu ponto de vista.
Experimente colocar mysql_real_escape_string na variável que recebe os valores via POST
Não estou usando MySQL. Qual a lógica de usar anti SQL injection?
>
Se o sistema não vai usar banco não e necessario md5 nen escape_string ;)
Nen sempre tem necessidade de usar banco ..
vai ver e um sistema interno e poucas pessoas vão usar ..
Ai por exemplo , 2 pessoas vão usar .. pra que criar uma tabela pra guardar 2 pessoas ?
Abraços
Pois é, a princípio era só para dois usuários, mas agora que tem vários, fiz um com mySQL, md5 e outras proteções.
A questão é: tem algum jeito de um usuário externo fazer login (no sistema MySQL less) sem saber a senha (além do brute-force)? E se eu colocar um captcha?
Entendi o porque de não usar o MySQL
Desculpem a minha noobice xD
@Hohenheim
Noobice Porque ??? Por Falar porque não usar um banco .!?
Não tem nada haver isso e normal ..
Justificando Porque Não Usar MD5
O Sistema e inbutido , pra que usar uma criptografia em algo interno e que fica inbutido no propio script ??
Abraços
Mas, qual a lógica de não ter acesso ao MySQL?
Você não vai ter mais de 1 usuário no seu sistema?
Adicione uma proteção contra SQL Inject, vai tornar o seu sistema mais seguro, a falta disso e a falta de acesso ao banco é o que torna seu sistema inseguro no meu ponto de vista.
Experimente colocar mysql_real_escape_string na variável que recebe os valores via POST
Eu iniciei um tópico relativo a um sistema de login hoje mesmo, acompanhe se quiser, e por favor critique e ajude a melhorar o meu código!
http://forum.imasters.com.br/index.php?/topic/423154-dicas-sistema-de-login-php-mysql/
Att