Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera, beleza?
Preciso da opnião de vocês sobre a segurança do meu codigo e estrutura.... obg
<?php
include('pdo.php');
include('String.php');
include('ssl.php');
$SSL = new ssl;
$MySql = new PdoAnalitc;
$String = new StringProt;
//verifica campos
if(isset($_POST['login']))
{
$login = $String->StringSemAcentos($_POST['login']);
}else die('preencha o campo login');
if(isset($_POST['senha']))$senha = $String->StringSemAcentos($_POST['senha']);
}else die('preencha o campo senha');
//conecta ao banco
echo $MySql->Connect("vitor","vitor","localhost","intranet");
//criptografia da senha (??) mas primeiro é neccessario testar se existe alguma coisa no banco por causa do IV
$query = $MySql->NumRows("SELECT * FROM usuarios WHERE login = '$login'");$array = $MySql->FeatchArray("SELECT * FROM usuarios WHERE login = '$login'");
$iv = base64_decode($array['PassHs']);
}else die('Login ou senha incorretos');$query = $MySql->NumRows("SELECT * FROM usuarios WHERE login = '$login' AND senha = '$senha'");
if($query == 1)$array = $MySql->FeatchArray("SELECT * FROM usuarios WHERE login = '$login' AND senha = '$senha'");
$_SESSION['login'] = base64_encode($SSL->Encrypt($login,'123',$iv));
$_SESSION['controle'] = $iv;
die("Ok... não é o pior codigo que eu ja vi na internet");
}else die("Login ou senha incorreto");
?>só para completar o amigo.
Não está seguro, pois você está usando dados vindo por $_POST direto em querys, sem filtrá-lo antes.
eu sei que com GET nós conseguimos com certa facilidade fazer consultas e etc..
creio que no POST apesar de mais seguro da pra se fazer a mesma coisa caso você não filtre podemos mandar valor como
1=1
fazendo com o que o código retorne true e quando retorna true normalmente você consegue logar, dai é meio passo para ferrar o restante do site.
um dica valiosa é que a segurança nem sempre ta no code e sim no server.
Provavelmente você está usando PDO, então filtre-as com bindParam ou bindValue:
EXEMPLOS:
$sql = $pdo->prepare("SELECT * FROM `tabela` WHERE `id` = :id");
$sql->bindValue(':id', $_GET['id'], PDO::PARAM_INT);
$sql->execute();
$sql = $pdo->prepare("SELECT * FROM `tabela` WHERE `id` = ? AND `title` = ?");
$sql->bindParam(1, $_GET['id'], PDO::PARAM_INT);
$sql->bindParam(2, $_GET['title'], PDO::PARAM_STR);
$sql->execute();aqui esta tratando a var:
$login = $String->StringSemAcentos($_POST['login']);
edit:
So passa letra maiuscola e minuscola / numeros.... é um preg_replace
edi2:
todas as includes foram feitas por mim
Não está seguro, pois você está usando dados vindo por $_POST direto em querys, sem filtrá-lo antes.
Use essa função para filtrar os dados vindo por post ou get: