Browse Source

Criado metodos contra sql injector no login e tratamento de erros

Neste commit, foi colocado uma consulta por etapas para realizar a contagem de tentativas, gerando um bloqueio em caso de tentativa de sql injector, alem de uma implementacao de tratamento de erros para comunicar-se com o cliente
cadastro_ramais
Matheo Bonucia 9 months ago
parent
commit
ca5348fecd
  1. 35
      login.php

35
login.php

@ -13,12 +13,12 @@ if (isset($_POST['btLogin'])) {
$validaTentativa = countTentativas($dbcon, $login, $tentativaErro); $validaTentativa = countTentativas($dbcon, $login, $tentativaErro);
if (!$validaTentativa && ($_POST["loginUser"] != 'admin')) { if (($validaTentativa == false) && ($_POST["loginUser"] != 'admin')) {
$jsStartup[] = "alert('Seu acesso foi bloqueado por inúmeras tentativas de acesso inválidos! Para o desbloqueio, realize a alteração de senha ou consulte seu Administrador.');"; echo "<script> confirm('Seu acesso foi bloqueado por inúmeras tentativas de acesso inválidos! Para o desbloqueio, realize a alteração de senha ou consulte seu Administrador.');</script>";
return; echo "<script> window.location.href = '/index.php';</script>";
} else if (!validarLicenca($dbcon) && ($_POST["loginUser"] != 'admin')) { } else if (!validarLicenca($dbcon) && ($_POST["loginUser"] != 'admin')) {
$jsStartup[] = "alert('Sua licença é inválida por favor entre em contato com o suporte da Simples IP para ativar sua central!');"; echo "<script> confirm('Sua licença é inválida por favor entre em contato com o suporte da Simples IP para ativar sua central!'); </script>";
return; echo "<script> window.location.href = '/index.php'; </script>";
} }
$query = "select id, nome, apelido, matricula, $query = "select id, nome, apelido, matricula,
@ -131,7 +131,8 @@ if (isset($_POST['btLogin'])) {
RegistraAcesso($_POST["loginUser"], ($row['id'] ? $row['id'] : '0'), '1'); RegistraAcesso($_POST["loginUser"], ($row['id'] ? $row['id'] : '0'), '1');
GravaFull(0, '', 'Tentativa de login inválido', $_POST["loginUser"]); GravaFull(0, '', 'Tentativa de login inválido', $_POST["loginUser"]);
$_SESSION["SSaut"] = "er"; $_SESSION["SSaut"] = "er";
echo '<script> alert("Usuário ou senha inválida!");</script>'; echo '<script> alert("Usuário ou senha inválida!");
</script>';
} }
if (isset($_POST['btLogin']) && $_SESSION["SSaut"] === "OK") { if (isset($_POST['btLogin']) && $_SESSION["SSaut"] === "OK") {
@ -144,15 +145,23 @@ if (isset($_POST['btLogin'])) {
function countTentativas($dbcon, $login, $tentativaErro) function countTentativas($dbcon, $login, $tentativaErro)
{ {
$login = addslashes($login); $boll_return=true;
// Use pg_prepare para preparar a consulta com um marcador de posição
$query = "SELECT COUNT(*) AS tentativas FROM pbx_controle_acesso WHERE acs_login = $1 AND acs_data_ini::DATE = CURRENT_DATE AND acs_erro = 0;";
// Prepara a consulta
$stmt = pg_prepare($dbcon, "count_query", $query);
// Executa a consulta com o valor do marcador de posição
$result = pg_execute($dbcon, "count_query", array($login));
$query = "SELECT COUNT(*) AS tentativas FROM pbx_controle_acesso WHERE acs_login = '$login' AND acs_data_ini::DATE = 'now' AND acs_erro = 1;";
$result = pg_query($dbcon, $query);
$res = pg_fetch_assoc($result); $res = pg_fetch_assoc($result);
if ($res['tentativas'] == $tentativaErro) {
return false; if ($res['tentativas'] >= $tentativaErro) {
$boll_return = false;
} }
return true; return $boll_return;
} }
function ValidaRecuperaSenha($dbcon) function ValidaRecuperaSenha($dbcon)
@ -212,7 +221,7 @@ if($renderizarPagina && (!$_GET['action'])){
<input type="password" placeholder="Insira sua senha" maxlength="14" name="loginPass" id="loginPass" /> <input type="password" placeholder="Insira sua senha" maxlength="14" name="loginPass" id="loginPass" />
</div> </div>
<div class="esqueci-senha"> <div class="esqueci-senha">
<a href="index.php?action=recovery_password">Esqueci minha senha</a> <a href="index.php?action=recovery_password">Recuperar senha</a>
</div> </div>
</div> </div>
<div class='bn-login'> <div class='bn-login'>

Loading…
Cancel
Save