0

Captcha - protegendo formulários contra ataques automatizados

criado por Ricardo Maia em 04/04/2006 7:04pm
Esta é a página que contêm o formulário e é onde a imagem será exibida. Ao executar seu projeto abra esta página no browser.

Seguindo a didática do comentário no fonte...

(form.php)
<?php
session_start
();

// evitando que ao se utilizar o botão voltar do navegador seja apresentada uma imagem já exibida!
// >>>>> início da prevenção de cache.
header
("Cache-Control: no-cache, no-store, must-revalidate");
header
("Expires: Sun, 01 Jan 1995 00:00:00 GMT");

if (isset($_SESSION['formulario_enviado']) && $_SESSION['formulario_enviado'] == TRUE){
        $_SESSION
['formulario_enviado'] = FALSE;
        header
("refresh:0; url=form.php");
}
// <<<<<< fim da prevenção de cache.

//incluindo o arquivo que contém a função captcha
include
("captcha.php");

// >>>>> início da prevenção de hacking do formulário.

$token
= md5(uniqid(rand(), TRUE));

$_SESSION
['token'] = $token;  
$_SESSION
['hora_token'] = time();
$_SESSION
['texto_captcha'] = captcha ("imagem","enigma2.ttf");

/*OBS:
A fonte deve estar no mesmo diretório que a página php.
O diretório deve ter permissão de escrita pois o php irá criar uma imagem em tempo de execução.
Requer as bibliotecas GD e FreeType.
*/


// <<<<<< fim da prevenção de hacking do formulário.
?>
<html>
<head><title>Captcha</title></head>

<style>
<!--
/*
Definições de estilo para apresentação da página.
*/

        body
{
                font
-family:Geneva, Arial, Helvetica, sans-serif;
                font
-size:12px;
       
}
       
#imagem_captcha{
                border
-style:dashed;
                border
-width:1px;
                border
-color:#CCCCCC;
       
}
       
       
#cod_confirmacao{
                border
-style:solid;
                border
-width:1px;
                border
-color:#333333;
                font
-family:Verdana, Arial, Helvetica, sans-serif;
                font
-size:12px;
                width
:200px;
       
}
       
       
#btn_submit{
                border
-style:groove;
                border
-width:2px;
                border
-color:#333333;
                font
-family:Verdana, Arial, Helvetica, sans-serif;
                font
-size:12px;
                width
:80px;
       
}
       
       
#btn_submit:hover{
                border
-style:ridge;
       
}
-->
</style>

<body onLoad="document.getElementById('cod_confirmacao').focus();">

<form action="processa.php" method="post" autocomplete="off">
        Informe os caracteres da imagem:
<br>
       
<img id="imagem_captcha" src="imagem.png" border="1"><br>
       
<input id="cod_confirmacao"  name="cod_confirmacao" type="text" size="10" maxlength="5" value=""><br>
       
<input id="btn_submit" type="submit" value="Enviar">
        <input type="hidden" name="token" value="
<?php echo $token; ?>">
</form>

</body>
</html>

Comentários:

Nenhum comentário foi enviado ainda.

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)