instalar un captcha de seguridad

¿Cómo instalar un buen captcha de Seguridad?

Pasos para implementar reCAPTCHA

http://recaptcha.net/


1.- ¿Qué es reCAPTHCA?
2.- Manual de instalación de reCAPTCHA
3.- Personalizacion del theme


1.- ¿Que es CAPTCHA?

Captcha es el acrónimo de Completely Automated Public Turing test to tell Computers and Humans Apart (Prueba de Turing pública y automática para diferenciar a máquinas y humanos).

Este es un típico test para la secuencia “smwm” que dificulta el reconocimiento de la máquina rotando las letras y añadiendo un gradiente de fondoSe trata de una prueba desafío-respuesta utilizada en computación para determinar cuándo el usuario es o no humano. El término se empezó a utilizar en el año 2000 por Luis von Ahn, Manuel Blum y Nicholas J. Hopper de la Carnegie Mellon University, y John Langford de IBM.

La típica prueba consiste en que el usuario introduzca un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta por lo que solamente el humano podría hacerlo (salvo error).

Como el test es controlado por una máquina en lugar de un humano como en la Prueba de Turing, también se denomina Prueba de Turing Inversa.

Los Captchas son utilizados para evitar que robots, también llamados spambots, puedan utilizar ciertos servicios. Por ejemplo, para que no puedan participar en encuestas, registrarse para usar cuentas de correo electrónico (o su uso para envío de correo basura) o, más recientemente, para evitar que correo basura pueda ser enviado por un robot (el remitente debe pasar el test antes de que se entregue al destinatario).

reCAPTCHA
PLUGIN GRATIS ANTI SPAMBOTS

Existen tres formas de uso reCAPTCHA: mediante un plugin de aplicación, utilizando una biblioteca para su lenguaje de programación, y el uso de la web basados en la API. Los siguientes recursos le ayudará a encontrar el método correcto para su entorno.

Cliente API
El cliente API guía describe cómo personalizar el comportamiento de la reCAPTCHA widget en su sitio. Esta guía se aplica a todos los plugins.
Entorno de programación plugins
•PHP
•ASP.NET
•Classic ASP: véase este foro
Python •Perl (aportados por Andy Armstrong)
•Ruby (aportados por McClain Looney)
•Otro Ruby biblioteca de Jason Perry L
Java (aportados por Soren)
ColdFusion (aportados por Robin Hilliard)

Aplicación complementos
•WordPress
•MediaWiki
•phpBB
•Movable Type (aportados por Josh Carter)
Drupal (aportados por Rob Loach)
Symfony (aportado por Arthur Koziel)
Typo3 (aportados por Jens Mittag. Véase también el ejemplo de utilizar el plugin)
NucleusCMS (aportados por Matt)
vBulletin (aportados por Magnus)
•Joomla (aportados por Robert van den Breemen)
Mailhide JSP (por Tamas Magyar)

Documentación API
Estos documentos describen el bajo nivel reCAPTCHA API. Usted debe de referencia estos documentos si está creando un nuevo plugin

Comunidad
reCAPTCHA Foro: un lugar donde usted puede hacer preguntas sobre reCAPTCHA y complementos

reCAPTCHA Wiki: un lugar para publicar cualquier información relacionada con la reCAPTCHA

reCAPTCHA en Google Code: muchos plugins que se desarrollan. Pregúntele a nosotros para acceder a ellos.

2.- MANUAL DE INSTALACION reCAPTCHA

Paso 1: Registrarse en reCAPTCHA

Nos tenemos que dirigir a http://recaptcha.net/ y registrarnos como usuarios. Nos solicitarán unos pocos datos personales para darnos de alta.

Una vez registrados debemos obtener unas claves para utilizar el sistema de captcha. Estas claves son específicas para cada dominio donde quieras utilizarlo. Las claves no son más que una llave pública y otra privada, que utilizaremos luego para poner la captcha en nuestra web.

Son algo como esto:

Public Key: 5LfCABCDEFGHIJUNDSBOejHq-5n5StSWawBpCAMX
Private Key: 6LfCAAAFHJSDFGHHJHDeju3a-Z5lomjShHKaGh9g

Esas claves son, lógicamente, secretas y debemos mantenerlas así. Las claves anteriores son de ejemplo.

En el sitio de reCAPTCHA tendremos que descargarnos unos códigos PHP con una librería PHP para poner en nuestro servidor y unos ejemplos de uso del sistema. Esto lo podemos conseguir en el apartado “Resources”. Veremos que tienen un plugin o librería para trabajar con PHP, que además está perfectamente documentado.

Una vez descargado el zip que contiene la librería PHP, la tenemos que poner en algún lugar de nuestro servidor. Recuerda luego donde la has puesto, porque tendrás que hacer un include con PHP de esa librería.

Por ejemplo, podríamos colocar dicha librería en el mismo directorio donde está la página PHP que va a hacer uso de ella. Entonces la incluiríamos con algo como esto:

require_once('recaptchalib.php');

Paso 2: Incluir el captcha en el formulario

En la librería descargada (‘recaptchalib.php’) Hay una función que sirve para mostrar la captcha. Simplemente tenemos que llamarla con los parámetros correctos. La función devuelve el código HTML que tenemos que colocar en la página para que se vea la captcha.

recaptcha_get_html($captcha_publickey, $error_captcha);

Los parámetros que recibe son la llave pública que conseguimos anteriormente y un código de error, que es opcional. Luego veremos de dónde podría venir ese código de error.

El código del formulario sería algo como esto:

<?
require_once('recaptchalib.php');
//Llaves de la captcha
$captcha_publickey = "xxxxxxxxxxxxxxxxxxxxxxx";
$captcha_privatekey = "yyyyyyyyyyyyyyyyyyyyyy";
//por ahora ponemos a null el error de la captcha
$error_captcha=null;
?>

<form action="miejemplo_formulario.php" method="post">
Nombre: <input type="text" name="nombre" size="30">
Edad: <input type="text" name="edad" size="3">
<br>
<?
//escribimos en la página lo que nos devuelve recaptcha_get_html()
echo recaptcha_get_html($captcha_publickey, $error_captcha);
?>
<br>
<input type="submit" value="Enviar">
</form>

Paso 3: Validar la captcha

Existe otra función para validar la captcha, llamada recaptcha_check_answer(). Esta función recibe también varios parámetros: La llave privada, la IP del usuario, y dos campos que contienen los valores que envía la captcha dentro del formulario $_POST[“recaptcha_challenge_field”] y $_POST[“recaptcha_response_field”].

Esta función devuelve un objeto que tiene dos propiedades:

is_valid, un boleano para decir si es se ha validado correctamente la captcha. error, un código de error que especifica qué ha ido mal si no se validó correctamente el texto.

Podríamos validar la captcha con algo como esto:

<?php
$captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($captcha_respuesta->is_valid) {
//todo correcto
//hacemos lo que se deba hacer una vez recibido el formulario válido
}else{
//El código de validación de la imagen está mal escrito.
$error_captcha = $captcha_respuesta->error;
}
?>

Llamamos a la función recaptcha_check_answer() enviando los parámetros comentados y guardamos el valor devuelto por la función en la variable $captcha_respuesta.

Luego comprobamos si el atributo $captcha_respuesta->is_valid es true. En ese caso sabemos que el texto escrito de la imagen se ha validado correctamente y hacemos lo que haya que hacer en el formulario.

Si $captcha_respuesta->is_valid era falso, entonces quiere decir que no estaba bien escrito el texto de la imagen. Podemos entonces actualizar la variable $error_captcha para que cuando mostremos de nuevo la captcha podamos pasarle el error generado y que avise al usuario.

Tenemos nuestra captcha funcionando!

El código completo de este ejemplo es el siguiente:

<html>
<head>
<title>Página con formulario protegido por captcha</title>
</head></span>

<body>
<?
require_once('recaptchalib.php');
//Llaves de la captcha
$captcha_publickey = "xxxxxxxxxxxxxxxxxxxxxxx";
$captcha_privatekey = "yyyyyyyyyyyyyyyyyyyyy";
$error_captcha=null;

if ($_POST){
$captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($captcha_respuesta->is_valid) {
//todo correcto
//hacemos lo que se deba hacer una vez recibido el formulario válido
echo "Todo correcto!";
}else{
//El código de validación de la imagen está mal escrito.
echo "Has escrito mal el texto";
$error_captcha = $captcha_respuesta->error;
}
}
?>

<form action="miejemplo_formulario.php" method="post">
Nombre: <input type="text" name="nombre" size="30">
<br>
Edad: <input type="text" name="edad" size="3">
<br>
<?
//escribimos en la página lo que nos devuelve recaptcha_get_html()
echo recaptcha_get_html($captcha_publickey, $error_captcha);
?>
<br>
<input type="submit" value="Enviar">
</form>

</body>
</html>

3.-PERSONALIZACION DEL THEME

Lo importante son la configuración inicial mediante la variable RecaptchaOptions, las funciones de javascript para las distintas acciones(Recaptcha.reload(), Recaptcha.switch_type(‘audio’), Recaptcha.showhelp()), el id del div donde va el captcha (recaptcha_image) y el input donde se escribe el captcha

<input type="text" id="recaptcha_response_field" name="recaptcha_response_field" />
<script>
     var RecaptchaOptions = {
        theme: 'custom',
        lang: 'es',
        custom_theme_widget: 'frm_recpatcha'
     };
 </script>
 <div class="frm_recpatcha">
 <div class="frm_recaptcha_img" id="recaptcha_image" >
    <img width="307" height="55" alt="Captcha" title="Captcha" class="captcha" src="/img/recaptcha.gif" alt="RECAPTCHA" />
 </div>

 <img src="/imgs/recaptcha_buttons.gif" width="26" height="57" alt="Captcha" title="Captcha" style="float:left;margin:0 auto; display:block;" />
 <p style="margin:5px 10px;"><a href="javascript:Recaptcha.reload()" class="azul">Recargar</a></p>
 <p style="margin:5px 10px;"><a href="javascript:Recaptcha.switch_type('audio')" class="azul">Audio</a></p>
 <p style="margin:5px 10px;"><a href="javascript:Recaptcha.showhelp()"  class="azul">Ayuda</a></p>
 <p><label style="">Introduce las 2 palabras de la imagen:</label></p>
 <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" name="#" maxlength="100" class="intro_captcha" />
<?php
echo recaptcha_get_html($captcha_publickey, $error_captcha);
?>

27 opiniones en “instalar un captcha de seguridad”

  1. Pingback: mexame.com
    1. tengo en mi web una form en contactanos y quiero instalar captcha y no se como hacerlo si me puedes ayudar si lo que tengo que hacer is copiar y pegarlo en mi source en esa pagina contactanos. cualquier ayuda es bienvenida.
      gracias

  2. Hola Pedro.
    Te cuento, desde hace 4 meses estoy usando el recaptcha guiandome por tu turotial,
    y te felicito todo funciona perfecto.
    Pero, resulta que me he dado cuenta que cuando abro mi pagina o mejor dicho el archivo que contiene el captcha, desde internet explore funciona bien pero entonces no se me ven las animaciones flash que tengo, y lo mas raro es que esas animaciones no se ven es solo donde estan los formularios con el captcha de resto se ven bien, no y los mas raro es que algunas veces se ve pero son mas las veces que no se ve.
    Bueno agradeciendo tu pronta respuesta en lo que me puedas guiar.
    Saludos…

    1. se me olvido recordarte que viera bien cuando se carga la pagina, para que evas que se descuadra uno segundos y luego al cargarse el recpatcha se pone bien sin embargo esos segundos hacenm que se ea la pagina fea.

    1. bueno donde te has quedado? has seguido avanzando? has hecho todos los pasos?
      Lee el resto de comentarios por si alguien le ha pasado lo mismo que a ti.
      Ya me cuentas,ok?

      Un saludo!

    1. Hola Pedro..
      He seguido paso a paso tu tutorial, con registro y obtencion de las keys correspondientes, pero no valida…
      Envia directamente tanto el ejemplo como el formulario real (que es un mailler),
      complete bien o mal o no el campo que requiere el captchat…
      Desde ya agradezco tu opinion
      Mis saludos!!

  3. doy info clara en este link http://www.selocambio.nixiweb.com/selocambio.com/ es de un proyecto para mi universidad, en donde necesito capturar en el index, con dos campos de texto el nombre y el correo del usuario, y tengo que implementar el sitema captcha, bajado la info de la paguna la he leido todo he incorporado todo pero me sale un mensaje de que necesito las claves y ya tengo 3 claves (en total 6), la verdad es urgente…. espero me colaboren

  4. Hola buenas tengo una duda con el reCAPTCHA. Tengo creada muchas paginas con su formulario y su recapcha de google y en algunas cuando pasa un tiempo la clave secreta del recapcha se cambia sola en la pagina de creacion de recapcha de google y por consiguiente el formulario de la web deja de funcionar. Tengo que mirar la clave secreta k se ha generado sola en la web de recapcha y modificarla en mi codigo para que vuelva a funcionar el formulario.

    Sabe alguien si la clave secreta de los reCAPTCHA caducan cada cierto tiempo??? Si es así hay algún porque y alguna manera de que no pase o me lo notifiquen?¿?¿

    Muchas gracias de antemano.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *