Ir para conteúdo
Fórum Script Brasil
  • 0

Login Seguro Com Imagem Gfx E Outros...


EvandroPH

Pergunta

Galera, estou criando um sistema para uma rede de locadoras, bem complexo, mas está em fase inicial de desenvolvimento:

O sistema funciona assim:

O Administrador cadastra as locadoras da rede,

Cada uma tem um código e acesso,

Todas podem trabalhar independentes das outras, mas o cadastro de clientes e o de filme é compartilhado.

Todas as locadoras têm acesso aos dados financeiros dos clientes, por exemplo, a locadora 1 pode ver se o cliente X tem algum DVD alocado na locadora 5...

Por esse motivo, a segurança no acesso ao sistema é imprescindível!

Meu problema está aí... Criei um sistema de login onde você deve entrar com o login e senha, e digitar o código q aparece na imagem (sistema criado por mim).

A página de login é essa:

<?
@session_destroy();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>INFORMAÇÕES DE LOGIN</title>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
<link href="../../style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="30" background="images/fundo4.jpg" bgcolor="#000066" class="titulobco">LOCADORA - ADMINISTRAÇÃO </td>
</tr>
<tr>
<td height="488" valign="top" background="images/fundo2.jpg" bgcolor="#DDDDDD">
<p>
<?php
$maxran = 3742681;
$random_num = mt_rand(0, $maxran);
?>
</p><br />
<p class="textonegrito"><? if (isset($_GET["log"])) {
$log = $_GET["log"];
switch ($log) {
case "a":
echo "ACESSO NÃO AUTORIZADO AO ARQUIVO SOLICITADO";
break;
case "b":
echo "CÓDIGO DE VALIDAÇÃO NÃO CONFERE";
break;
case "c":
echo "NÃO FOI POSSÍVEL EFETUAR LOGIN, VERIFIQUE SEU NOME DE USUÁRIO E SENHA. LEMBRE-SE: O SISTEMA DIFERENCIA MAIÚSCULAS DE MINÚSCULAS";
break;
case "d":
echo "ERRO DESCONHECIDO. ENVIE UM E-MAIL PARA suporte@catalogodovale.com.br INFORMANDO ONDE OCORREU O ERRO E QUAIS OS DADOS INFORMADOS";
break;
}
}



?></p>
<form action="test.php" method="post">
<table cellpadding="3" cellspacing="0" background="images/fundo6.jpg">
<tr>
<td width="155" class="textonegrito"><div align="right">Usuário: </div></td>
<td width="389"><input name="username" type="text" class="textonormal" size="20" maxlength="25">
<span class="textoreduzido">Digite o seu login </span></td>
</tr>
<tr>
<td class="textonegrito"><div align="right">Senha: </div></td>
<td><input name="user_password" type="password" class="textonormal" size="20" maxlength="20">
<span class="textoreduzido">Digite a sua senha </span></td>
</tr>
<tr><td><div align="right"><img src="gfx.php?random_num=<?php echo $random_num; ?>"> </div></td><td><input NAME="gfx_check" type="text" class="textonormal" SIZE="20" MAXLENGTH="6">
<span class="textoreduzido">Digite o texto da figura </span>
<tr><td><div align="right">
<input type="hidden" name="random_num" value="<?php echo $random_num; ?>">
<span class="textoreduzido">Se a figura estiver<br />
ilegível, pressione F5 </span></div></td>
<td><input type="submit" value="login"></td></tr>
</table>
</form>
</td>
</tr>
<tr>
<td height="30" background="images/fundo4.jpg" bgcolor="#000066"> </td>
</tr>
</table>
</body>
</html>[/codebox]

e a página que gera a imagem GFX é essa:

[codebox]<?php
@session_start();
$datekey = date("D Y M");
$rcode = md5(session_id() . $_SERVER["HTTP_USER_AGENT"] . $_REQUEST["random_num"] . $datekey);
$code = substr($rcode, 2, 6);

$maxcor = 255;
$red = mt_rand(100, $maxcor);
$green = mt_rand(100, $maxcor);
$blue = mt_rand(100, $maxcor);

$fileimage = mt_rand(10, 19);
$imagem = "images/".$fileimage.".jpg";
$image = ImageCreateFromJPEG($imagem);

$text_color = ImageColorAllocate($image, $red, $green, $blue);
Header("Content-type: image/jpeg");
imagefilledellipse($image, mt_rand(20, 70), mt_rand(1, 30), mt_rand(20, 80), mt_rand(10, 30), $text_color);

$maxcor = 100;
$red = mt_rand(0, $maxcor);
$green = mt_rand(0, $maxcor);
$blue = mt_rand(0, $maxcor);

$red = mt_rand(0, $maxcor);
$green = mt_rand(0, $maxcor);
$blue = mt_rand(0, $maxcor);
$text_color = ImageColorAllocate($image, $red, $green, $blue);
Header("Content-type: image/jpeg");
ImageString ($image, 5, 6, 5, $code[0], $text_color);

$red = mt_rand(0, $maxcor);
$green = mt_rand(0, $maxcor);
$blue = mt_rand(0, $maxcor);
$text_color = ImageColorAllocate($image, $red, $green, $blue);
Header("Content-type: image/jpeg");
ImageString ($image, 3, 22, 1, $code[1], $text_color);

$red = mt_rand(0, $maxcor);
$green = mt_rand(0, $maxcor);
$blue = mt_rand(0, $maxcor);
$text_color = ImageColorAllocate($image, $red, $green, $blue);
Header("Content-type: image/jpeg");
ImageString ($image, 5, 32, 6, $code[2], $text_color);

$red = mt_rand(0, $maxcor);
$green = mt_rand(0, $maxcor);
$blue = mt_rand(0, $maxcor);
$text_color = ImageColorAllocate($image, $red, $green, $blue);
Header("Content-type: image/jpeg");
ImageString ($image, 4, 42, 2, $code[3], $text_color);

$red = mt_rand(0, $maxcor);
$green = mt_rand(0, $maxcor);
$blue = mt_rand(0, $maxcor);
$text_color = ImageColorAllocate($image, $red, $green, $blue);
Header("Content-type: image/jpeg");
ImageString ($image, 3, 56, 11, $code[4], $text_color);

$red = mt_rand(0, $maxcor);
$green = mt_rand(0, $maxcor);
$blue = mt_rand(0, $maxcor);
$text_color = ImageColorAllocate($image, $red, $green, $blue);
Header("Content-type: image/jpeg");
ImageString ($image, 5, 68, 1, $code[5], $text_color);

ImageJPEG($image, '', 75);
ImageDestroy($image);
die();
?>

Primeira Dúvida:

Como mudo a fonte das letras que aparecem na imagem? já tentei alguns comandos e não funcionou... Quero que apareça em várias fontes, como Verdana, Times New Roman, ComicSans...

E se alguém tiver umas dicas de como melhorar esse código, ficaria extremamente grato.

Segunda Dúvida:

Como faço pra restringir o acesso a somente o pc da locadora? Explicando: quero que somente o PC lá da locadora possa acessar esse administrativo, e se o "funcionário" da locadora tentar acessar em casa, ele dar como acesso restrito... Mais ou menos como aquele sistema de cadastramento de PCS do Banco do Brasil, pra quem acessa contas lá sabe disso... Em outro fórum me disseram pra cadastrar o IP da máquina, mas como todos sabem, isso pode ser burlado muuuuuuuuuuito facilmente. Mas existe um IP que não é alterável, ou ID, sei lá, nunca fiz nada sobre isso, mas me disseram sobre ele em outro fórum, mas não entendí nada...

E logo logo posto outras dúvidas sobre esse gerenciador... Ele é complexo pacas! Mas é tudo código simplificado...

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

O banco do Brasil deve gerar a chave a partir das características do PC (algum serial do hardware), só que note que lá eles usam JAVA para várias coisas... então fica bem mais simples, a solução do IP é o mais simples e até certo ponto segura...

Se a fonte for true type, você pode usar o imagettftext para configurar a fonte...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...